2

在将 Webapp2 Auth 用户对象作为参考存储在 google 应用引擎 ndb 域实体中时,试图找出最佳实践。

我能想到的 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 vs key 有什么好处吗?假设 UserProperty 是旧的做事方式?

4

1 回答 1

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.
  """
于 2013-03-13T00:44:55.877 回答