如何在Google Cloud数据存储(Node.js)中执行仅键查询(&Q) [英] How to do a "keys-only-query" in Google Cloud Datastore (Node.js)
本文介绍了如何在Google Cloud数据存储(Node.js)中执行仅键查询(&Q)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用Google Datastore API for Node.js执行"仅键查询",如文档here所示。
我在保存了许多这样的记录后才这样做:
datastore.save(
records.map(
(record) => {
return {
key: datastore.key([kind, record.id]),
data: record,
};
}
)
常量kind
是字符串。每个record
都有一个有效的唯一id
属性(一个数字),如此处所示,该属性还应用作数据存储密钥标识符。
记录已正确存储。我可以通过
毫无问题地检索它们datastore.runQuery(datastore.createQuery(kind))
.then( (results) => {
// whatever...
}
已正确返回所有保存的记录。
但当我执行这样的"仅键查询"时(和as exemplified in the documentation):
const query = datastore.createQuery(kind)
.select('__key__');
datastore.runQuery(query)
.then( (results) => {
// whatever...
}
我的results[0]
返回值只是一个空对象数组,如下所示:
results[0]: [ {}, {}, {}, {}, {}, ..., {}]
此处返回的空对象数是给定类型的正确记录数。但问题是,它们是空洞的物体。我希望在这里获得每个记录的数据存储区密钥。
另一方面,如果我对"Normal"属性(如"id"--据我所知,在通过datastore.key[kind, record.id]
定义键之后,它应该与数据存储键相同)执行"Normal"投影查询,则我正确地检索到投影的"id"属性,从而:
const query = datastore.createQuery(kind)
.select('id');
datastore.runQuery(query)
.then( (results) => {
// whatever...
}
结果:
results[0]: [
{ id: 5289385927 },
{ id: 5483575687 },
{ id: 5540575111 },
{ id: 5540622279 },
// ... and so on
]
那么,我的"仅键查询"有什么问题呢?我已经完全按照文档描述的方式完成了。但我只能得到空结果。
注意:我仅在数据存储仿真程序中测试过此功能。在数据存储仿真程序中的结果与在AppEngine中的结果相同。
推荐答案
对象不是空的,而是仅包含存储在符号属性下的数据存储键:datastore.KEY
。在Java脚本中,默认情况下可能不会输出符号属性。
您可以使用符号datastore.KEY
var keys = results.map(function(res) {
return res[datastore.KEY];
});
这篇关于如何在Google Cloud数据存储(Node.js)中执行仅键查询(&Q)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文