2013-03-11 4 views
2

Попытка выяснить оптимальную практику при сохранении объектов пользователя Webapp2 Auth в качестве ссылки в объекте домена ndb для платформы Google.Хранение объектов пользователя в Google App Engine

В 3 способа я могу думать, чтобы сделать это

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

или

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

, где я хранить идентификатор пользователя из объекта webapp2 пользователя как

user.get_id() 

или

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

, где я бы хранить ключ пользователя из webapp2 объекта пользователя, как

user.key 

Я не уверен, что это лучшая практика здесь? В частности, есть ли какое-либо преимущество для хранения ключа user_id и ключа? Предполагая, что UserProperty - это старый способ сделать что-то?

ответ

3

Избегайте UserProperty, вместо этого сохраните идентификатор.

Прямо из источника ...

# 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. 
    """ 
+0

ли идентификатор лучше, чем ключ, потому что они также имеют KeyProperty (позволяет указать конкретные типы) думал бы хранить ключ лучше? – dboyd68

+1

Идентификатор - это уникальный идентификатор пользователя, ключ может быть специфичным для реализации. – jdiaz5513

Смежные вопросы