节点数据存储区查询以获取键以及其他类型的属性

时间:2019-01-29 06:31:14

标签: node.js google-cloud-platform google-cloud-datastore

我使用下面的节点查询来获取类型的所有属性-“地点”

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

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

但是,如果我在节点中运行上述get查询,我不会找回密钥。 还有文档说,我们可以使用如下查询来获得数据存储中所有类型的键-

const query = datastore
  .createQuery()
  .select('__key__')
  .limit(1);

但是如何将这两个属性关联起来以获取所有属性,包括查询中给定类型的键?

1 个答案:

答案 0 :(得分:0)

我做了很多研究,并为我的问题提出了以下解决方案,并且可以正常工作。

通过节点的获取请求将从数据存储中获取所有实体,并且所有这些实体及其键将在节点接口上可见。但是,即使我们将相同的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
      }
    );
  })
})