我创建了一个简单的数据存储区(项目),其中包含一个字符串属性(名称)和一些示例数据集。
当我使用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' } ]
如何正确选择__key__
模块的@google-cloud/datastore
属性?
答案 0 :(得分: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];
});