通过独特的电子邮件在appengine中创建自己的帐户系统

时间:2012-09-03 15:04:38

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

我想创建自己的帐户系统,我知道数据存储区中没有唯一的fiels。我做了一些关于唯一约束的搜索,我找到了2路

首先:emailaddress作为键,所以我们可以快速检查它是否存在,但这不是现实世界的例子。

第二:使用事务,但数据存储区写入速度慢,所以我不想锁定所有记录

使用自定义会计的大型应用程序是适合会计的数据存储区吗? developer.google.com上是否有关于安全自定义会计的文档?

感谢anwswers ......

1 个答案:

答案 0 :(得分:2)

您可以在GAE上实现自己的唯一约束(这是webapp2 auth模块所做的):

我建议不要使用电子邮件地址作为实体的ID,因为在创建实体后,您无法更改实体的ID。如果您需要让用户更改其电子邮件地址,则必须为其创建新的用户实体,然后更新对该实体的所有引用(其他实体中的引用属性)并重新创建任何子实体(用户的实体)实体是父母。)

检查属性查询的唯一性的一个问题是,您无法在事务中执行非祖先查询,因此,据我所知,您无法查询属性值的唯一性并保存在同一事务中具有该唯一值的新实体。这意味着您的查询有可能会说属性值是唯一的,但是当您的实体被写入时,该值不再是唯一的。我上面链接的唯一约束代码没有此限制,因为您可以测试在写入新实体的同一事务中id是否唯一。

注意:上面我称之为“id”的内容在db库中称为key_name,在ndb库中称为id。