【问题标题】:In Google Datastore, how do I transfer an entity, which references another entity, from one project to another?在 Google Datastore 中,如何将引用另一个实体的实体从一个项目转移到另一个项目?
【发布时间】:2016-09-08 09:23:48
【问题描述】:
实体密钥(例如 urlsafe 密钥)包含项目标识符。即,这些键的构建类似于 projectID+kind+entityId。这些键可以存储在一个实体的字段中,作为对另一个实体的引用。
因此,当您在 Google Cloud 项目之间复制部分或全部数据库时(例如,作为备份或创建测试环境)时,实体之间的所有引用都会中断。
我们如何在项目之间安全地复制实体?
【问题讨论】:
标签:
google-app-engine
google-cloud-platform
google-cloud-datastore
【解决方案1】:
如果您的实体有这样的键(假设是 Python):
some_key = ndb.KeyProperty()
那么当你转移到一个新的项目时,这个键就不会中断。此键不包含项目 ID。
如果您将 urlsafe 密钥存储在实体中,则在将数据传输到新项目时需要全部更新它们,因为 urlsafe 密钥确实包含项目 ID。
除非您有多个项目相互交互,否则您可能不应该存储 urlsafe 密钥。