创建视图以检查文档字段中的特定值(对于简单登录)

时间:2016-01-21 09:31:41

标签: couchdb cloudant

我对cloudant很新,所以请原谅我这个问题。我正在创建一个简单的移动游戏登录系统,只检查用户名(电子邮件)和密码。

我有几个这种格式的简单文档

{
    "_id": "xxx",
    "_rev": "xxx",
    "password": "3O+k+O8bxsxu0KUlSBUiww==", --encrypted by application beforehand
    "type": "User",
    "email": "asd@asd.com"
}

现在我似乎无法获得正确的公式'用于创建此视图(地图功能),我将执行网络请求并将其传递给电子邮件和密码。如果有与该电子邮件匹配的文档,请检查doc.password与传递的值。如果匹配,则该函数应返回一个简单的" YES"。

现在我的地图功能如下,但这只会返回所有文档。

function(doc) {
    if (doc.email){
        index("password", doc.password, { store : true });
        if (doc.password){ 
            emit("YES");
        }
    }
}
可能是我的请求格式也错了。现在它如下。值不是真实的,仅用于格式检查

https:/etcetc/_design/app/_view/viewCheckLogin?q=email:"asd@asd.com"&password:"asd"

1 个答案:

答案 0 :(得分:2)

看起来你误解了视图应该如何工作。通常,您无法执行 logic 以根据请求返回不同的结果。查看请求中的查询参数只能用于限制返回的视图条目的结果集,或者从reduce函数返回分组信息。

要确定给定用户名和密码是否匹配,您可以将这些值作为键发出,然后查询它们。如果没有匹配,这将返回这些键的视图条目或空列表。但是我对这里的安全性非常谨慎。有权访问该视图的任何人都可以看到所有视图条目,即所有用户名和密码。