将实体的ID重新用于其他不同种类的实体-理智的想法?
我的(python)应用程序正在使用几个实体,其中许多实体处于1:1关系。例如:
class Main(ndb.Model):
field1 = ndb.StringProperty()
#peer_key = ndb.KeyProperty(kind='Peer')
class Peer(ndb.model):
field2 = ndb.IntegerProperty()
#main_key = ndb.KeyProperty(kind='Main')
某些Main
实体可能具有完全按1:1关系的Peer
实体(在实体之后创建Main
)。
我当时在想,在创建Peer
实体时,我可以简单地指定一个等于对应Main
实体ID的数字ID(由数据存储区自动生成,因此保证是唯一的):
main_entity = Main(field1='blah')
main_entity.put()
peer_entity = Peer(id=main_entity.key.id(), field2=10)
peer_entity.put()
这样,我可以大大简化我的应用程序的逻辑,而无需存储和处理实体密钥以交叉引用这些实体,尤其是在跨请求传递它们时。例如,在拥有主要实体的情况下,我可以简单地执行以下操作:
peer_entity = Peer.get_by_id(main_entity.key.id())
同样,在有对等实体的情况下:
main_entity = Main.get_by_id(peer_entity.key.id())
根据文档,密钥是(kind,
id)
成对的,这意味着只要类型不同且id是唯一的,我就 不会 遇到问题。我到目前为止(在开发服务器上)所做的测试似乎运行良好。
我的想法是正确的还是我遗漏了什么(到目前为止,我在测试中只是很幸运)?