2

我正在使用 Google App Engine NDB。有时我想在指定列表中获取所有具有电话号码的用户。为此使用查询非常昂贵,所以我想我只需将 User 实体的 id 值设置为用户的电话号码,这样我就可以直接通过 id 获取。

问题是电话号码字段是可选的,所以最初创建的用户实体没有电话号码,因此没有 id 值。所以它将被创建user = User()而不是user = User(id = phone_number).

因此,当用户稍后决定将电话号码添加到他的帐户时,是否可以将该用户实体的 id 值修改为新的电话号码?

4

1 回答 1

3

实体 ID 构成实体主键的一部分,因此无法更改它。更改它与使用新密钥创建新实体并删除旧实体相同 - 如果您愿意,这是您可以做的一件事。

更好的解决方案是创建PhoneNumber一种提供对关联的引用的类型User,允许您使用 get 操作进行查找,但不要求每个用户都只有一个电话号码。

于 2012-10-25T13:04:36.753 回答