我正在尝试创建一个与Twitter非常相似的网站。用户将能够发布消息。用户将能够“跟随”彼此。在主页上,他们会看到他们关注的用户发送的消息,按时间排序。
如何为此创建appengine模型?
在传统的关系数据库中,我猜它会是这样的:
数据库'用户':
数据库'跟随':
数据库'消息':
查询将类似于:
SELECT * FROM messages m, follows f WHERE m.user_id = f.follow_id AND f.user_id = current_user_id
我想上面的例子我很清楚。如何在Google App Engine中复制此内容?
答案 0 :(得分:4)
一段时间以来,谷歌I / O上有一个有用的演示文稿,描述了构建可扩展的类似Twitter的微博应用程序,并详细讨论了这个问题:http://www.google.com/events/io/2009/sessions/BuildingScalableComplexApps.html
答案 1 :(得分:1)
REVISED:
class AppUser(db.Model):
user_id = db.UserProperty()
username = db.StringProperty()
following = db.ListProperty(db.Key) # list of AppUser keys
class Message(db.Model):
sender = db.ReferenceProperty(AppUser)
body = db.TextProperty()
然后,您将分两步查询结果:
message_list = []
for followed_user in current_user.following:
subresult = db.GqlQuery("SELECT __key__ FROM Message WHERE sender = :1", followed_user)
message_list.extend(subresult)
results = Message.get(message_list)
('current_user'是与您的活跃用户对应的'AppUser'实体)