当有人注册我的网站时,他们必须使用唯一的用户名注册。我目前的伪代码是:
if(datastore.nameIsAvailable(name)){
datastore.createUser(name);
}
如何确保在nameIsAvailable
返回true和createUser
完成之间,我的应用的另一个实例不会创建具有相同名称的用户?
答案 0 :(得分:2)
您可以查询名称:
appuser = AppUser.all().filter('name =', name).get()
if appuser:
# user already has this name
else:
# it's all yours!
...或者更好的是将用户名作为AppUser
的
appuser = AppUser.get_by_key(name)
if appuser:
# user already has this name
else:
# it's all yours!
......甚至更好:
appuser = AppUser.get_or_insert(name)
# appuser is now either the existing user with this name,
# or a new user with this name!
将您的名称作为实体的key_name意味着它将永远是唯一的,并且以他们的名字查找用户将尽可能快。
(假设您使用的是Python,如果没有,我可以添加一个Java示例,但想法是一样的)