文档here表示我可以省略实体的数字ID,DataStore会自动分配一个。
然而,它没有说明如何检索自动生成的id。怎么得到它?
它是否在响应中可用,或者我是否必须对其他某些字段进行查询以再次检索实体,以便我可以看到它的ID?
答案 0 :(得分:3)
它将在响应中的相应req = datastore.CommitRequest()
req.mode = datastore.CommitRequest.NON_TRANSACTIONAL
employee = req.mutation.insert_auto_id.add()
# Request insertion with automatic ID allocation
path_element = employee.key.path_element.add()
path_element.kind = 'Employee'
# ... set properties ...
resp = self.datastore.commit(req)
auto_id_key = resp.mutation_result.insert_auto_id_key[0]
中。这是一个扩展到here的Python代码段:
property
答案 1 :(得分:0)
在 Node 库中,生成的密钥通过symbol存储在查询的对象中。数据存储库在datastore.KEY
上公开了此符号,您可以使用它来访问从数据存储中检索到的实体的ID /密钥:
// Pseudocode -- you have a handle on the entity from prior list / create operation:
const myEntity = datastore.queryOrListOrCreate();
// actual usage to update it:
const key = myEntity[datastore.KEY];
console.log(JSON.stringify(key));
// prints something like: {"id":"5664922973241322","kind":"myEntity","path":["myEntity","5664922973241322"]}
// use it to e.g. udpate the entity
await datastore.save({
key,
data: myEntity,
});
文档中没有对此进行解释,因此不确定是否已正式批准。