Modify a Google App Engine entity id?

2019-07-10 23:55发布

I'm using Google App Engine NDB. Sometimes I will want to get all users with a phone number in a specified list. Using queries is extremely expensive for this, so I thought I'll just make the id value of the User entity the phone number of the user so I can fetch directly by ids.

The problem is that the phone number field is optional, so initially a User entity is created without a phone number, and thus no value for id. So it would be created user = User() as opposed to user = User(id = phone_number).

So when a user at a later point decides to add a phone number to his account, is there anyway to modify that User entity's id value to the new phone number?

1条回答
霸刀☆藐视天下
2楼-- · 2019-07-11 00:34

The entity ID forms part of the primary key for the entity, so there's no way to change it. Changing it is identical to creating a new entity with the new key and deleting the old one - which is one thing you can do, if you want.

A better solution would be to create a PhoneNumber kind that provides a reference to the associated User, allowing you to do lookups with get operations, but not requiring every user to have exactly one phone number.

查看更多
登录 后发表回答