通过不区分大小写的电子邮件查找用户的 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) . '"');