在Google App Engine NDB域实体中将Webapp2 Auth用户对象存储为参考时,试图找出最佳实践。

我可以想到的3种方式

class MyEntity(ndb.Model):
  users = ndb.UserProperty(repeated=True)


要么

class MyEntity(ndb.Model):
  users = ndb.StringProperty(repeated=True)


我将在其中存储来自webapp2 User对象的用户ID的位置

user.get_id()


要么

class MyEntity(ndb.Model):
  users = ndb.KeyProperty(repeated=True)


我将在其中存储来自webapp2 User对象的用户密钥的位置

user.key


我不确定这里的最佳做法是什么?特别是,存储user_id与密钥有什么好处吗?假设UserProperty是旧的处理方式?

最佳答案

避免使用UserProperty,而是存储ID。

直接从源头...

# google/appengine/ext/ndb/model.py:1711

class UserProperty(Property):
  """A Property whose value is a User object.

  Note: this exists for backwards compatibility with existing
  datastore schemas only; we do not recommend storing User objects
  directly in the datastore, but instead recommend storing the
  user.user_id() value.
  """

关于python - 在Google App Engine中存储用户对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15345502/

10-13 02:39