Quel type de propriété dois-je utiliser pour mettre le user_id () d'un utilisateur dans le magasin de données?
-
22-09-2019 - |
Question
Ceci est la raison pour laquelle je dois mettre user_id () de la Banque de données:
Une valeur de l'utilisateur dans le magasin de données ne obtenir mis à jour si l'utilisateur change son adresse e-mail. On peut y remédier en une version future. Jusque-là, vous pouvez utiliser le user_id () de la valeur de l'utilisateur comme identifiant unique stable de l'utilisateur.
http://code.google.com/appengine /docs/python/datastore/typesandpropertyclasses.html#users_User
Dans le magasin de données, la valeur est égale à l'adresse e-mail ainsi que le ID unique de l'utilisateur. Si l'utilisateur change son adresse e-mail, la nouvelle valeur de l'utilisateur ne sera pas égale à la valeur d'origine de l'utilisateur dans les requêtes de magasin de données ou par rapport par l'application. Si votre application a besoin d'une stabilité identifiant qui ne change pas, vous peut stocker l'ID unique séparément de la valeur de l'utilisateur.
http://code.google.com/appengine/docs /python/users/userobjects.html
Comment puis-je faire?
Et comment saviez-vous (ou où avez-vous regardé vers le haut?)
La solution
La réponse habituelle est « pas de propriété »: Si vous avez besoin d'un identifiant stable, il est probablement parce que vous êtes à la recherche des utilisateurs par elle, dans ce cas, vous devez l'utiliser comme nom de clé pour l'entité, comme suit:
class UserInfo(db.Model):
is_admin = db.BooleanProperty(required=True, default=False)
user_info = UserInfo.get_or_insert(users.get_current_user().user_id())
Si vous avez vraiment besoin de stocker un identifiant pour l'utilisateur ailleurs, vous pouvez utiliser un db.StringProperty pour stocker l'ID utilisateur.