Google App Engine:使用users.get_current_user()。user_id()作为NDB实体的ID

时间:2015-02-01 08:34:04

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

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

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

因此我想使用googleId作为ndb实体的KEY并在祖先查询中使用它。 像

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

它完美无缺,但我想知道是否有任何有效理由不这样做(即googleId可能比ndb id属性的最大大小等更长)。

1 个答案:

答案 0 :(得分:1)

我需要看到你的MyUser模型(可能还有一些其他代码)更自信,但是,假设这一切都处于一种非常正常的安排中,我认为你不会遇到任何问题麻烦。

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