在Google的App Engine上激怒了用户查询

时间:2012-02-01 22:21:03

标签: google-app-engine

我在Google的App Engine上有一个网络服务,它使用Google的用户API来验证用户身份,管理帐户(包括高级服务订阅)以及管理数据所有权。对于几乎所有的东西,它的效果非常好。

但是,我经常需要使用数据存储区查看器来检查用户的条目以响应支持请求,并且需要输入GQL来查找某人的帐户信息。查询通常如下所示:

SELECT * FROM UserAttr WHERE user = USER('blah@fish.com')

这应该可以正常工作,但无论出于何种原因,上面的USER构造函数(?)都是区分大小写的,而且,如果用户的Google帐户有{{{},则有时会出现奇怪的行为。 1}}地址。如果是gmail.com地址,有时 gmail.com有效,但有时 USER('whoever@gmail.com')有效。令人发狂的是,我必须在GQL控制台中尝试各种不同的排列来尝试查看内容,如果明显的案例差异不起作用,我通常会放弃。

我在这里做了一些完全错误的事情,还是这种行为真的很糟糕?任何想法,如果这种事情在Python API中运行得更好(也就是说,如果我通过Python做类似的请求,它仍会表现出这种愚蠢的行为吗?)。如果我能让Google的仪表板为我工作,我想避免为这个应用程序编写我自己的管理页面。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我发现谷歌不建议将用户存储在数据存储区,因为电子邮件地址可能会改变:

来自here

  

db和NDB库都具有UserProperty属性类型   应用程序可以存储用户值。但是,因为这些值变成了   用户更改电子邮件地址时无效,大多数应用程序没有   很好地利用了这个功能。

它们可能也意味着用户表示在内部发生变化。

如果我找到任何可以解决的问题,我会通知你

----编辑----

here 他们建议存储用户的ID以便进行查询和比较。有道理......