2

我正试图围绕一个看似非常简单的用例,但我似乎失败了。练习的目标是在高复制数据存储中为使用 Google Accounts 用户名登录的用户查找一组记录,并保持高度一致。

我的数据如下所示:

class Account(ndb.Model):
    owner = ndb.UserProperty()
    name = ndb.StringProperty()

class Content(ndb.Model):
    content = ndb.StringProperty()

当我第一次创建帐户时,我只需执行以下操作:

current_user = users.get_current_user()
new_account = Account(owner=current_user, name='Some Name')
new_account.put()

现在创建内容:

new_content = Content(parent=new_account.key, content='Some Content')
new_content.put()

当用户登录时,我只能通过UserProperty查询,但我似乎无法将用户设置为实体组的父级,那么如何确保我始终可以通过登录用户查找Account并且非常一致?

拥有帐户后,祖先查询过程将确保内容检索的一致性,但我一直坚持根据 User 来确定祖先。

4

2 回答 2

5

最简单和最好的方法是使用键名。在这种情况下,您的 Account 实体的键名应该是用户的 ID。您可以像这样创建帐户:

new_account = Account(owner=current_user, id=current_user.user_id(), name='Some Name')

你可以像这样查找它们:

existing_account = Account.get_by_id(current_user.user_id())
于 2012-04-23T02:40:24.387 回答
0

我不确定您究竟为什么要这样做,但您还必须为其创建一个父实体Account,以便您可以使用祖先对其执行查询。

于 2012-04-23T00:20:41.110 回答