0

是否可以根据文档的属性检索文档?

users如果电子邮件已经存在,我希望能够测试我的注册?但是,在我看来,您只能通过_id...检索文档

我使用 Cloudant 作为使用 CouchDB 的云服务。

4

1 回答 1

2

您可以使用电子邮件地址作为文档的 id,因此无法添加具有相同电子邮件的其他文档。您还可以使用 CouchDB 的基本功能view来检查电子邮件在插入之前是否存在。这两种方法都需要稍后解决冲突。如果是第一种情况,可能还有另一个 Couch 节点的文档冲突尚未被复制。在第二种情况下,两个用户可以将帐户添加到同一台服务器,但他们都将首先检查现有的电子邮件,然后都将添加他们的帐户。

添加视图需要添加计算视图定义所在的设计文档。您可以使用如下函数创建索引map

function (doc) {
  if (!doc.email) return;
  emit(doc.email, doc);
}

您可以使用以下方式查询视图

http://localhost:5984/YOUR_DTABASE/_design/YOUR_DESIGN_DOCUMENT/_view/YOUR_VIEW?key='e-mail@addre.ss'

请注意,电子邮件比较并不像您想象的那么简单:

  1. DNS 域名(“@”之后)不区分大小写(用户名通常区分大小写)
  2. 在典型的电子邮件系统中,您可以分配别名。
  3. 一些电子邮件系统允许嵌入目标文件夹和更改电子邮件字符串但指向同一个邮箱的附加信息(例如 box+folder@domain.com)。
  4. Gmail 会忽略“.”,因此 First.Last@gmail.com 等于 FirstL.ast@gmail.com
于 2012-11-04T15:43:12.697 回答