Jud*_*orn 2 datastore node.js google-cloud-platform
我在使用 node.js 从 Google Cloud Datastore 中删除实体时遇到问题。我怀疑我错过了一些非常基本的东西,因为这应该不难。
我仅根据此文档获取密钥:
const query = datastore.createQuery('coin').select('__key__');
Run Code Online (Sandbox Code Playgroud)
运行查询:
const [keys] = await datastore.runQuery(query);
Run Code Online (Sandbox Code Playgroud)
根据本文档按键删除生成的实体:
datastore.delete(keys);
Run Code Online (Sandbox Code Playgroud)
但我得到“InvalidKey:密钥应该至少包含一种”。
如果我在运行查询后立即执行 console.log(keys) ,则确实会出现一个有效类型的关键结果数组:
[
{
[Symbol(KEY)]: Key {
namespace: undefined,
id: '5083500323536896',
kind: 'coin',
path: [Getter]
}
},
{
[Symbol(KEY)]: Key {
namespace: undefined,
id: '5130717650485248',
kind: 'coin',
path: [Getter]
}
},
etc...
Run Code Online (Sandbox Code Playgroud)
上面不是数组 .delete() 所期望的吗?
感谢这篇文章,我意识到仅键查询的结果不是键数组,而是存储在符号属性下的键数组。现在当我查看输出时,这一点很明显,但它太出乎我的意料,我没有想到这一点。
因此,为了对键数组运行 delete(),我需要从每个结果中提取键,如下所示:
const justTheKeys = keys.map(function(res) {
return res[datastore.KEY];
});
Run Code Online (Sandbox Code Playgroud)
然后我终于可以删除实体了:
datastore.delete(justTheKeys);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
736 次 |
| 最近记录: |