繁体   English   中英

在前端访问Google Cloud Datastore密钥

[英]Access google cloud datastore keys on the frontend

我在节点/表达式上编写了一个get查询,以获取一种类型的所有实体。 get请求成功,我看到所有属性都以json的形式返回,可以在前端角度站点上对其进行监视。 但是我看不到NAME / ID属性,它基本上是与实体相关的键。 我需要实体的名称/ ID或键才能执行其他操作。 如何提取要在前端UI / html上访问的密钥?

获取我使用过的查询-

app.get("/api/venues/", (req, res, next) => {
    const query = datastore
    .createQuery('venue');

    query.run().then((venuesList) => {
    // do something
  })

运行节点后,我得到的结果是-

[ { property1: '<property-value-1>',
    property2: '<property-value-2>',
    property3: '<property-value-3>',
    property4: '<property-value-4>',    
    [Symbol(KEY)]:
     Key {
       namespace: undefined,
       id: <'id-value'>,
       kind: 'venue',
       path: [Getter] } } ]

我无法访问或看到上面获得的“密钥”在前端获得结果。

似乎在堆栈溢出时很少有Google Cloud Datastore查询的贡献者。 无论如何...我做了很多研究,并提出了以下问题解决方案,它正在工作。

通过节点的获取请求将从数据存储中获取所有实体,并且所有这些实体及其键将在节点接口上可见。 但是,如果我们将相同的json(带有实体)传递给UI,则实体的键在UI(Angular,我正在使用)上不可见。

所以我对从数据存储区获取的json进行了修改。 我分别提取了实体的键,并在同一json中创建了一个新属性,然后将此修改后的json传递给UI。 所以现在,我能够通过我在节点上创建的别名属性来访问实体的键。 检查下面的修改后的代码-

app.get("/api/venues/", (req, res, next) => {
    const query = datastore
    .createQuery('venue');

    query.run().then(([venuesList]) => {
    venuesList.forEach(venue => { venue['venueKey'] = venue[datastore.KEY] });
    //venuesList.forEach(venue => console.log(venue));
    res.status(200).json(
      {
        message: "Request was processed successfully!",
        venues: venuesList
      }
    );
  })
})

我希望这会对社区中的其他人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM