通过不区分大小写的电子邮件查找用户的 CouchDB 视图
CouchDB view to find users via case-insensitive email
我的 _user 数据库中有一个 CouchDB 视图,我可以在其中根据用户的电子邮件地址找到他们(user.email
是他们的用户文档的一部分)。
{
"_id": "_design/find-user",
"views": {
"email->doc": {
"map": "function (doc) {\n emit(doc.email, doc);\n}"
}
},
"language": "javascript"
}
我正在使用以下 curl url 通过 PHP 访问匹配的用户:
curl_setopt($ch, CURLOPT_URL, $url . '/_users/_design/find-user/_view/email->doc?key="' . $email . '"');
这有效,但区分大小写,这是我不想要的。例如,我需要 $email = TesT@example.com
才能在我的数据库中找到 tESt@example.com
。
我试过以下方法,但只能转换输出。
function (doc) {
emit(doc.email.toLowerCase(), doc);
}
您 toLowerCase()
的方向是正确的。您唯一缺少的是您还必须转换搜索词。
不要搜索 "TEST@example.com"
,而是搜索 strtolower("TEST@example.com")
:
curl_setopt($ch, CURLOPT_URL, $url . '/_users/_design/find-user/_view/email->doc?key="' . strtolower($email) . '"');
我的 _user 数据库中有一个 CouchDB 视图,我可以在其中根据用户的电子邮件地址找到他们(user.email
是他们的用户文档的一部分)。
{
"_id": "_design/find-user",
"views": {
"email->doc": {
"map": "function (doc) {\n emit(doc.email, doc);\n}"
}
},
"language": "javascript"
}
我正在使用以下 curl url 通过 PHP 访问匹配的用户:
curl_setopt($ch, CURLOPT_URL, $url . '/_users/_design/find-user/_view/email->doc?key="' . $email . '"');
这有效,但区分大小写,这是我不想要的。例如,我需要 $email = TesT@example.com
才能在我的数据库中找到 tESt@example.com
。
我试过以下方法,但只能转换输出。
function (doc) {
emit(doc.email.toLowerCase(), doc);
}
您 toLowerCase()
的方向是正确的。您唯一缺少的是您还必须转换搜索词。
不要搜索 "TEST@example.com"
,而是搜索 strtolower("TEST@example.com")
:
curl_setopt($ch, CURLOPT_URL, $url . '/_users/_design/find-user/_view/email->doc?key="' . strtolower($email) . '"');