我对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"
答案 0 :(得分:2)
看起来你误解了视图应该如何工作。通常,您无法执行 logic 以根据请求返回不同的结果。查看请求中的查询参数只能用于限制返回的视图条目的结果集,或者从reduce函数返回分组信息。
要确定给定用户名和密码是否匹配,您可以将这些值作为键发出,然后查询它们。如果没有匹配,这将返回这些键的视图条目或空列表。但是我对这里的安全性非常谨慎。有权访问该视图的任何人都可以看到所有视图条目,即所有用户名和密码。