【问题标题】:Access google cloud datastore keys on the frontend在前端访问谷歌云数据存储密钥
【发布时间】:2019-01-29 16:01:52
【问题描述】:

我在 node/express 上编写了一个 get 查询来获取一种类型的所有实体。获取请求成功,我看到所有属性都以 json 形式返回,我可以在前端 angular 站点上对其进行监控。但我没有看到 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] } } ]

我无法访问或查看上述获取的“密钥”在前端获取结果。

【问题讨论】:

    标签: node.js angular nosql 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
      • 2017-11-23
      • 2018-05-11
      • 2021-01-30
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多