代码之家  ›  专栏  ›  技术社区  ›  Aadith Ramia

写入google app engine datastore相同的实体和相同的密钥覆盖-预期?

  •  2
  • Aadith Ramia  · 技术社区  · 15 年前

    我有一个数据存储对象,它使用类中的一个字段来创建键。假设我有一个对象“a”,这个字段的值为“k”。如果我尝试将对象“b”添加到数据存储中,该数据存储也具有字段值“k”,则对象“b”将覆盖对象“a”。只是想确认这是否是预期行为。虽然看起来很明显,但如果有人能解释一下基本概念,那就太好了。

    3 回复  |  直到 13 年前
        1
  •  7
  •   jbochi    15 年前

    正如亚当所解释的,简短的答案是两个实体不能共享同一个键(想象一下口述)。不过,长的答案有点复杂。见 docs :

    路径和密钥唯一性

    实体的完整键, 包括路径、种类和 名称或数字标识,唯一且 特定于该实体。完整的 当实体为 在数据存储中创建,但没有 它的部件可以改变。

    两个不同实体的键可以 至少有相似的零件 一部分是不同的。例如, 两个实体可以具有相同的类型 如果他们有不同的名字 父母。同样,两个实体可以 具有相同的父级(或没有父级) 如果他们不一样的话,就给他们起个名字 种类 .

    应用程序不应依赖 分配的数字标识 按…的顺序递增 实体创建。这通常是 但不能保证。

        2
  •  3
  •   Nick Johnson    15 年前

    对。应用引擎数据存储不区分“插入”和“更新”——两者都是“放置”操作。

        3
  •  1
  •   Adam Crossland    15 年前

    数据存储对象的键是标识它的唯一值,因此是的,如果对象A和对象B在数据存储中具有相同的键,它们将互相覆盖。