写入谷歌应用程序引擎数据存储相同的实体具有相同的密钥覆盖 - 预期?

Aad*_*mia 2 google-app-engine google-cloud-datastore

我有一个数据存储区对象,它使用类中的一个字段来创建密钥.假设我有一个对象'a',该字段的值为'k'.如果我尝试将对象'b'添加到数据存储区(对于该字段也具有值'k'),则对象'b'将覆盖对象'a'.只是想确认这是否是预期的行为.虽然它看起来很明显,如果有人可以解释基本概念,那将是很好的..

jbo*_*chi 7

正如亚当解释的那样,简短的回答是两个实体不能共享相同的密钥(想象一个字典).但答案很长,有点复杂.查看文档:

路径和关键唯一性

实体的完整密钥(包括路径,种类和名称或数字ID)是唯一且特定于该实体的.在数据存储区中创建实体时会分配完整密钥,并且其任何部分都不能更改.

只要至少一个部分不同,两个不同实体的键可以具有相似的部分.例如,如果两个实体具有不同的父母,则它们可以具有相同的种类和名称.类似地,如果两个实体属于不同类型,则它们可以具有相同的父(或没有父)和名称.

应用程序不应依赖于按实体创建顺序按递增顺序分配的数字ID.通常情况如此,但不能保证.