我有一个用于用户身份验证的 HTML 表单,用 SQL 语言更容易提取数据
select name, password from users where name='nameField' and password='passwordField'
在 couchdb 中,我不能仅使用临时 View 来使用本地 View :
curl -X POST -H 'Content-Type: application/json' -d '{"map": "function (doc) {if (doc.name === "nameField" && doc.password === "passwordField") {emit (doc.name, doc.passWord)}}"}' http://localhost:5984/somedb/_temp_view
但不推荐(Click here),我该怎么办? :(
谢谢
最佳答案
这就是我通常喜欢做的...
创建您的设计文档并查看。例如,/_design/users/_views/byUserPass
您的 map 函数可能看起来像这样(没有 reduce 函数):
函数(文档)
{
如果(doc.docType ==“用户”)
emit([doc.username, doc.password], doc);
然后我可以这样查询:
http://localhost:5984/somedb/_design/users/_views/byUserPass?key=["exampleUsername", "examplePassword"]
如果我得到返回的行,则凭据是正确的。作为奖励,我还获得了用户的所有信息。现在我可以更新他们的 session (例如,将他们的用户 ID 放入 session 中)或文档(例如,更新“上次登录时”),而无需额外调用 CouchDB 来获取他们的信息。
如果您不想更新任何内容,则返回一个空值:emit([doc.username, doc.password], null);
- 这也会减少带宽消耗,因为您不再传回整个文档。
干杯。
关于forms - 在 couchdb 中选择用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2769716/