【问题标题】:Google App Engine: using users.get_current_user().user_id() as id of NDB entityGoogle App Engine:使用 users.get_current_user().user_id() 作为 NDB 实体的 id
【发布时间】:2015-02-01 08:34:03
【问题描述】:

我正在开发基于 Google App Engine(Webapp2/Python 和 ndb)的网络应用程序。 我正在使用 Google OAuth2 身份验证并将我通过 users.get_current_user().user_id() 获得的 googleId 存储在我的 ndb 的自定义用户实体中。 因此,这个实体既有一个 id(由 ndb 自动提供),也有这个由我设置的名为 googleId 的属性。 我将此用户对象用作我存储在 ndb 中的其他已用数据的共同祖先。

这种方法很烦人,因为为了避免多个 ndb 查询(每个请求一个),我必须在会话中存储当前登录用户的 id、其 google id 并验证它是否与当前登录用户不同。

因此,我考虑使用 googleId 作为 ndb 实体的 KEY 并在祖先查询中使用它。 喜欢

 mu = MyUser(id = users.get_current_user().user_id())
 mu.put()

它工作得很好,但我想知道是否有任何正当理由不这样做(即 googleId 可能长于 ndb id 属性的最大大小等)

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore


    【解决方案1】:

    我需要查看您的 MyUser 模型(可能还有其他一些代码)才能更有信心,但是,假设这一切都是正常安排,我认为您不会遇到任何麻烦。

    数据存储区 ID 可能很长,而 user_id 反过来也不应该太大(不幸的是,这两个限制都没有严格记录,但我个人不会过分担心)。

    【讨论】:

      猜你喜欢
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多