【问题标题】:Node datastore query to fetch keys along with other properties of a kind节点数据存储查询以获取键以及其他类型的属性
【发布时间】:2019-06-22 05:30:23
【问题描述】:

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

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);

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

【问题讨论】:

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


    【解决方案1】:

    我做了很多研究,并为我的问题提出了以下解决方案,并且它正在发挥作用。

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

    所以我对从数据存储区获得的 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
          }
        );
      })
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2023-03-31
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多