用户的昵称

时间:2011-12-12 02:18:08

标签: google-app-engine

我在应用程序中有5种类型的对象,比如A,B,C,D,E

应用程序列出了所有类型的对象,其中显示了其名称,创建的用户和其他信息。

现在,为了能够在每个对象列表中显示用户名,我有一些选项

1)将USER实体密钥存储在每个对象中,然后当我检索A类对象的说明列表时,还检索用户的密钥及其名称,然后将它们附加到A类对象

2)当创建任何类型的对象时,还存储属性“Name”,该属性将是创建对象的用户的名称(Yikes接近恕我直言,如果用户稍后更改其名称会怎样;)

但我不相信上述两种方式都是正确的!我正在寻找一个可能面临类似问题的人的答案

2 个答案:

答案 0 :(得分:2)

实际上你已经回答了自己,选项2是不可取的,因为用户可以更改他/她的用户名,并且在DataStore中级联更改(手动)不是一个好的选择。

答案 1 :(得分:0)

http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#ReferenceProperty

链接示例:

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, 但谷歌应用引擎确实支持你需要的对象关系。

http://code.google.com/appengine/docs/java/datastore/jdo/relationships.html#Owned_One_to_One_Relationships