我读过很多关于^{
然而,我不确定我是否理解哪些情况需要哪种策略。在
例如,如果我有一个User类,并且用户可以创建链接,修改设置,并获得成就,那么我是否最好将链接、设置和成就作为StructuredProperties包含在User对象中?在
或者,我最好使用单独的实体,这些实体用祖先密钥组合在一起?在
假设我将主要执行读操作,偶尔也会写入这些数据。在
ndb.StructuredProperty
示例:
class Achievement(ndb.Model):
date = ndb.DateTimeProperty(auto_now_add=True)
achievement_name = ndb.StringProperty(required=True)
class Link(ndb.Model):
title = ndb.StringProperty(required=True)
url = ndb.StringProperty(required=True)
class Settings(ndb.Model):
tile_layout = ndb.JsonProperty(required=True)
email_updates = ndb.BooleanProperty(default=True)
class User(ndb.Model):
user_name = ndb.StringProperty(required=True)
settings = ndb.StructuredProperty(Settings)
links = ndb.StructuredProperty(Link, repeated=True)
achievements = ndb.StructuredProperty(Achievement, repeated=True)
祖先分组示例:
^{pr2}$谢谢!在
作为一个基于实体组(以用户为父级)的模型的示例,实际上只是一个由实体组成的模型,其中引用了用户实体(其键)。它不是实体组。如果需要创建实体组,父项的键必须是子体键的一部分。在
不管怎样,当你使用一个与你的祖先实体的一致性时,首先要考虑的是与你的实体的一致性。在
您可以找到我对与实体组here和类似问题here有关的问题的答案。在
结构化属性的一个缺点是不能独立于它们所属的实体来检索它们。在
正确的模型主要取决于使用实体的方式。在
相关问题 更多 >
编程相关推荐