我有一个数据存储区对象,它使用类中的一个字段来创建密钥。假设我有一个对象'a',该字段的值为'k'。如果我尝试将对象'b'添加到数据存储区,该字段也具有该字段的值'k',则对象'b'将覆盖对象'a'。只是想确认这是否是预期的行为。虽然看起来非常明显,如果有人能够解释基本概念,那就太棒了。
答案 0 :(得分:7)
正如亚当解释的那样,简短的回答是两个实体不能共享相同的密钥(想象一个字典)。但答案很长,有点复杂。请参阅docs:
路径和关键唯一性
实体的完整密钥, 包括路径,种类和 名称或数字ID,是唯一的 特定于该实体。完整的 当实体是,分配密钥 在数据存储区中创建,而不是 它的部分可以改变。
两个不同实体的密钥可以 只要至少有类似的部分 一部分是不同的。例如, 两个实体可以具有相同的类型 并且如果它们有不同则命名 父母。同样,两个实体也可以 拥有相同的父母(或没有父母) 并且如果它们不同则命名 种强>
应用程序不应该依赖 正在分配的数字ID 按顺序增加顺序 实体创造。这通常是 案件,但不保证。
答案 1 :(得分:3)
是。 App Engine数据存储区不区分“插入”和“更新” - 两者都是“放置”操作。
答案 2 :(得分:1)
数据存储区对象的Key是标识它的唯一值,所以是的,如果对象A和对象B在数据存储区中具有相同的Key,它们将相互覆盖。