在couchdb中选择用户

Cai*_*aio 3 forms couchdb login

我有一个用于身份验证的HTML表单,使用SQL语言更容易提取数据

select name, password from users where name='nameField' and password='passwordField'
Run Code Online (Sandbox Code Playgroud)

在couchdb我不能使用本地视图只是临时视图:

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

但不建议(点击这里),我该怎么办?:(

谢谢

Sam*_*bee 7

这就是我通常喜欢做的事情......

  1. 创建您的设计文档和视图.例如,/ _design/users/_views/byUserPass

  2. 你的map函数可能看起来像这样(没有reduce函数):

    function(doc)
    {
      if(doc.docType =="user")
        emit([doc.username,doc.password],doc);
    }

  3. 然后我可以像这样查询: http://localhost:5984/somedb/_design/users/_views/byUserPass?key=["exampleUsername", "examplePassword"]

  4. 如果我得到一个返回的行,那么凭据是正确的.作为奖励,我还获得了所有用户的信息.现在我可以更新他们的会话(例如,将他们的用户ID放入会话中)或文档(例如,在上次登录时更新"),而无需另外调用CouchDB来获取他们的信息.

如果你不想更新任何东西,那么返回一个null值:emit([doc.username, doc.password], null);- 这也会减少带宽消耗,因为你不再传回整个doc.

干杯.