【发布时间】:2012-10-19 15:05:37
【问题描述】:
我正在使用 Google App Engine NDB。有时我想在指定列表中获取所有具有电话号码的用户。为此使用查询非常昂贵,所以我想我只需将 User 实体的 id 值设为用户的电话号码,这样我就可以直接通过 id 获取。
问题在于电话号码字段是可选的,因此最初创建的用户实体没有电话号码,因此没有 id 值。所以它将被创建为user = User(),而不是user = User(id = phone_number)。
因此,当用户稍后决定将电话号码添加到他的帐户时,是否可以将该用户实体的 id 值修改为新的电话号码?
【问题讨论】:
-
也许我没听懂?获取旧的实体 id,删除它并放入新的实体 id。
-
@voscausa 好吧,它是同一个实体。 id 是实体的键。在 NDB 中,它被称为 id 而不是 key_name
-
NDB Docs:要检索或创建的键名(即字符串键 ID)。所以当它是一个字符串时,它是一个键名。
-
@voscausa 对,所以现在可以在创建实体后更改此 key_name 吗?
-
是的,我想是的。 Guido 认为没有理由使用额外的方法来获取 key_name。因为您可以识别“NDB id”是否包含 id 或名称(数据存储)。