google-app-engine - 具有相同 ID 的多个数据存储实体!

标签 google-app-engine google-cloud-datastore

我遇到了一个大问题 - 我的数据存储区中的多个实体具有相同的 ID!它们的键是 Key,但我一直假设 key.getId() 将返回一个在所有同类实体中唯一的数字。

不是这样的!不同的key可以返回相同的id!啊!我可以通过使用数据查看器来确认这一点——多个实体在 id/name 列中具有相同的值。具有重复键的实体都在不同的实体组中——它们有不同的父键。我没有在同一实体组中看到任何重复 ID,但我不知道这不会发生。

  1. 这正常吗?
  2. 有什么方法可以自动生成唯一的数字标识符吗?我知道我可以提供我自己的 id 值,但必须为此实现我自己的系统似乎太过分了!

最佳答案

key 不仅包括 ID 或 key 名称 - 它还包括种类、父项和应用程序 ID。这就是为什么多个实体可能共享 key 的相同 ID 部分的原因 - 只要 key 的某些其他组件不同就完全没问题。

如果你想生成一个唯一 id,使用db.allocate_ids方法。

关于google-app-engine - 具有相同 ID 的多个数据存储实体!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221776/

相关文章:

python - 模型中的自动 GUID key_name

python - 将 Polymer 与 App Engine Python Jinja2 Templating 结合使用,将 Datastore 值传递给 polymer 元素

python - 如何更改 NDB 记录的祖先?

google-app-engine - 使用 Go 更新 Google Appengine 数据存储中的实体

python - 如何更新数据存储中的信息?

python - 使用 Flask 的 StackDriver 错误报告中未显示 Google App Engine 错误

python-3.x - 在运行时获取 Google App Engine LocationId

java - 是否有用于 appengine Java 报告生成的示例?

google-app-engine - 是否可以在谷歌应用引擎上将马提尼的 sessionauth 与数据存储一起使用?

java - 在客户端使用 Ref.create() 会导致错误