我在应用程序中有5种类型的对象,比如A,B,C,D,E
应用程序列出了所有类型的对象,其中显示了其名称,创建的用户和其他信息。
现在,为了能够在每个对象列表中显示用户名,我有一些选项
1)将USER实体密钥存储在每个对象中,然后当我检索A类对象的说明列表时,还检索用户的密钥及其名称,然后将它们附加到A类对象
2)当创建任何类型的对象时,还存储属性“Name”,该属性将是创建对象的用户的名称(Yikes接近恕我直言,如果用户稍后更改其名称会怎样;)
但我不相信上述两种方式都是正确的!我正在寻找一个可能面临类似问题的人的答案
答案 0 :(得分:2)
实际上你已经回答了自己,选项2是不可取的,因为用户可以更改他/她的用户名,并且在DataStore中级联更改(手动)不是一个好的选择。
答案 1 :(得分:0)
链接示例:
class Author(db.Model):
name = db.StringProperty()
class Story(db.Model):
author = db.ReferenceProperty(Author)
story = db.get(story_key)
author_name = story.author.name
author = db.get(author_key)
stories_by_author = author.story_set.get()
使用ReferenceProperty可以轻松完成option1。 如果性能不是您的主要考虑因素,则无需额外的代码。
我没有在Google App Engine上使用java, 但谷歌应用引擎确实支持你需要的对象关系。