我有一个注册页面,要求用户输入用户名和电子邮件地址。如何检查CouchDB中的可用性和预留用户名
我需要检查用户名+电子邮件是否可用。如何做到这一点只需一个HTTP请求?
顺便说一句,用户名被用作docID。
我现在正在做的是检查是否存在docID,然后使用视图来检查电子邮件地址的可用性,但这是2个HTTP请求。
我曾考虑过使用视图发送[用户名,电子邮件]作为密钥,并用“键”参数= [用户名,电子邮件]查询视图。但是,如果用户名和电子邮件属于不同的现有用户,则这不起作用。
我有一个注册页面,要求用户输入用户名和电子邮件地址。如何检查CouchDB中的可用性和预留用户名
我需要检查用户名+电子邮件是否可用。如何做到这一点只需一个HTTP请求?
顺便说一句,用户名被用作docID。
我现在正在做的是检查是否存在docID,然后使用视图来检查电子邮件地址的可用性,但这是2个HTTP请求。
我曾考虑过使用视图发送[用户名,电子邮件]作为密钥,并用“键”参数= [用户名,电子邮件]查询视图。但是,如果用户名和电子邮件属于不同的现有用户,则这不起作用。
Jason。然而,正如你所说,山姆的解决方案非常有用,它可能不适合你。我可以想到另外两种选择。
假装你回到SQL中。什么是用户的主要关键?它既不是用户名,也不是电子邮件,而是两列。相同的CouchDB。
所以,以绝对保证的唯一性,答案很简单:它必须是文档_id
。例如,对于用户“杰森”用电子邮件“[email protected]”,发布此文档:
{ "_id": "jason:[email protected]",
"other stuff": "blah blah blah"
}
这是一个原子,交易,用户创建。它可以:
_rev
财产。太好了,那个用户/邮件组合已经被使用了!当然,简单地检查如果名称是可用的,你可以GET /db/jason:[email protected]
。 (你可以像_users
数据库那样加上id前缀,比如users:jason:[email protected]
—这取决于你。)然后你可以在POST
之后回来。在此期间有可能会被采取,但这在所有“先检查,后期保留”的表单中是正常的,这些表单现在在网络上很常见。
第二个想法更多的是仔细考虑你的情况。你说两个用户可以使用相同的用户名和电子邮件。这听起来很奇怪。也许我读错了。这里有一些事情要考虑:
P.S.你真的拥有[email protected]吗?幸运的混蛋! :p – JasonSmith 2010-07-07 04:22:21
我对回答这样一个古老的问题表示歉意,但我面临同样的问题。 “为什么不制作实际的登录名呢?这对Facebook来说足够了。” 1)Facebook不这样做。 Facebook使用唯一的数字ID,其中包含电子邮件地址,姓名,昵称*和*与其关联的用户名。 2)电子邮件地址经常改变。 – Flimzy 2015-08-29 23:15:34
你可以通过你的网址与
http://localhost:5984/yourdatabase/_design/viewname/_view/viewid?key=["username","password"]
如果相同的用户名和密码,你的文档中存在,将返回的数据。
[couchdb中的唯一约束]的可能的重复(http://stackoverflow.com/questions/1541239/unique-constraints-in-couchdb) – Flimzy 2015-08-29 23:18:04