在Google App Engine中存储用户对象

时间:2013-03-11 18:08:07

标签: python google-app-engine webapp2

在将Google Apps2 Auth用户对象存储为Google应用引擎ndb域实体中的参考时,尝试找出最佳做法。

我能想到的3种方法

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

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

我将在webapp2用户对象中存储用户ID,如

user.get_id()

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

我会在webapp2用户对象中存储用户密钥,例如

user.key

我不确定这里的最佳做法是什么?特别是存储user_id vs key有什么好处?假设UserProperty是旧的做事方式吗?

1 个答案:

答案 0 :(得分:3)

避免使用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.
  """