2010-05-04 71 views
3

选择用户我对用户进行身份验证的HTML表单,与SQL语言是更容易提取数据CouchDB中

select name, password from users where name='nameField' and password='passwordField' 

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 

但它不推荐(Click here),我该怎么办? :(

感谢

回答

7

这是怎么了我平时喜欢做...

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

  2. 你的地图功能可能会是这个样子(不减少功能):

    功能(DOC)
    {
       如果(doc.docType == “用户”)
            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); - 这将降低带宽消耗为好,因为你不再传递整个文档回来。

干杯。

+0

它帮了我很多我非常感谢你=) – Caio 2010-05-05 16:02:56

+0

真棒,很高兴听到! :-) – 2010-05-06 16:38:16