【问题标题】:Property __key__ is empty with node属性 __key__ 为空,有节点
【发布时间】:2017-10-29 22:03:01
【问题描述】:

我创建了一个简单的数据存储(项目),其中包含一个字符串属性(名称)和一些示例数据集。

当我使用gql 时,我可以选择__key__ 并可以通过__key__ 属性进行查询。

但是当我从 nodejs 中选择数据时,__key__ 属性为空。

问题

设置:

const datastore = require('@google-cloud/datastore')({
  projectId: 'my-project',
  keyFilename: `path/to/keyfile.json`
});

不工作:使用仅键查询选择所有数据集:

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

datastore.runQuery(query).then( results => {

  console.log('RESULTS:', results[0]);
})

结果:

RESULTS: [ {}, {}, {} ]

正常查询按预期工作:

datastore.runQuery(query).then( results => {

  console.log('RESULTS:', results[0]);
})

.. 但这里也缺少 __key__ 属性:

RESULTS: [ { name: 'Test Projekt 1' },
  { name: 'Test Projekt 2' },
  { name: 'Test Projekt 3' } ]

问题

如何正确选择带有@google-cloud/datastore 模块的__key__ 属性?

【问题讨论】:

    标签: node.js google-app-engine google-cloud-datastore


    【解决方案1】:

    我对Node不太熟悉,但在API doc中找到了以下示例代码。也许它有帮助:

    仅键查询仅返回结果实体的键 实体本身,延迟和成本更低。

    var keysOnlyQuery = datastore.createQuery('Lion').select('__key__');
    
    datastore.runQuery(keysOnlyQuery, function(err, entities) {
      var keys = entities.map(function(entity) {
        return entity[datastore.KEY];
      });
    });
    

    如果省略回调,我们将返回一个 Promise。

    datastore.runQuery(query).then(function(data) {
      var entities = data[0];
    });
    

    【讨论】:

      猜你喜欢
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多