Reputation: 32061
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?
Upvotes: 2
Views: 1447
Reputation: 101139
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.
Upvotes: 3