我有一个注册页面,要求用户输入用户名和电子邮件地址。
我需要检查用户名+电子邮件是否可用。如何通过一个HTTP请求执行此操作?
BTW,用户名用作docID。
我现在正在做的是检查docID是否存在,然后使用视图检查电子邮件地址的可用性,但这是2个HTTP请求。
我考虑使用视图发出[用户名,电子邮件]作为密钥,并使用“密钥”参数= [用户名,电子邮件]查询视图。但如果用户名和电子邮件属于不同的现有用户,则无法使用。
答案 0 :(得分:1)
杰森。 Sam的解决方案非常有用,但正如您所说,它可能不适合您。我可以想到另外两个选择。
假装你回到SQL中。用户的主要关键是什么?它既不是用户名也不是电子邮件,而是两列。与CouchDB相同。
因此,要绝对保证唯一性,答案很简单:它必须是文档_id
。例如,对于使用电子邮件“jason@gmail.com”的用户“jason”,请发布此文档:
{ "_id": "jason:jason@gmail.com",
"other stuff": "blah blah blah"
}
这是一个原子的,事务性的用户创建。它可以:
_rev
属性。太棒了,那个用户/电子邮件组合已经被采用了!当然,只需检查,如果名称可用,您可以GET /db/jason:jason@gmail.com
。 (您可以像_users
数据库一样为id添加前缀,例如users:jason:jason@gmail.com
- 这取决于您。)然后您可以稍后再POST
。有可能会在同一时间内采取,但这在所有“先检查,保留以后”形式中是正常的,这在网络上很常见。
第二个想法更多的是仔细考虑你的情况。您说两个用户可以使用相同的用户名和电子邮件。这听起来很奇怪。也许我读错了。以下是一些需要考虑的事项:
答案 1 :(得分:0)
您可以使用
传递您的网址http://localhost:5984/yourdatabase/_design/viewname/_view/viewid?key=["username","password"]
如果您的文档中存在相同的用户名和密码,则会返回数据。