相关疑难解决方法(0)

如何在Google Cloud Datastore(Node.js)中执行"仅限密钥查询"

我试图做一个"纯键查询"与谷歌的数据存储API对Node.js的,如文档中的例子在这里.

我保存了许多这样的记录后这样做:

datastore.save(
  records.map(
    (record) => {
      return {
        key: datastore.key([kind, record.id]),
        data: record,
      };
    }
  )
Run Code Online (Sandbox Code Playgroud)

常量kind是一个字符串.每个record都有一个有效的唯一id属性(一个数字),如此处所示,它也应该作为数据存储区密钥标识符.

记录存储正确.我可以毫无问题地检索它们

datastore.runQuery(datastore.createQuery(kind))
.then( (results) => {
    // whatever...
}
Run Code Online (Sandbox Code Playgroud)

正确返回所有已保存的记录.

但是,当我这样做"仅限密钥的查询"时(并在文档中举例说明):

const query = datastore.createQuery(kind)
  .select('__key__');
datastore.runQuery(query)
.then( (results) => {
    // whatever...
}
Run Code Online (Sandbox Code Playgroud)

我的results[0]返回值只是一个空对象数组,如下所示:

results[0]: [ {}, {}, {}, {}, {}, ..., {}]
Run Code Online (Sandbox Code Playgroud)

此处返回的空对象数是给定类型的正确记录数.但问题是它们是空物.我希望在这里获得每条记录的数据存储区密钥.

另一方面,如果我在"正常"属性上执行"正常"投影查询(例如"id" - 应该与数据存储区键相同,据我所知,在定义了密钥之后datastore.key[kind, record.id]) ,我正确检索投影的"id"属性,因此:

const query = datastore.createQuery(kind)
  .select('id');
datastore.runQuery(query)
.then( (results) …
Run Code Online (Sandbox Code Playgroud)

google-app-engine node.js google-cloud-datastore

5
推荐指数
1
解决办法
966
查看次数