基于CouchDB中的属性获取文档(使用PHP和Cloudant)
是否可以根据文档的属性检索该文档 我希望能够在注册时测试我的基于CouchDB中的属性获取文档(使用PHP和Cloudant),couchdb,cloudant,Couchdb,Cloudant,是否可以根据文档的属性检索该文档 我希望能够在注册时测试我的用户,看电子邮件是否已经存在?然而,在我看来,您只能通过\u id检索文档 我使用Cloudant作为云服务,它使用CouchDB。您可以使用电子邮件地址作为文档的id,因此无法添加具有相同电子邮件的其他文档。您还可以使用CouchDB的基本功能,即,在插入之前检查电子邮件是否存在。这两种方法都需要更晚的时间。如果是第一种情况,则可能有另一个coach节点具有尚未复制的冲突文档。在第二种情况下,两个用户可以将帐户添加到同一台服务器,但两
用户
,看电子邮件是否已经存在?然而,在我看来,您只能通过\u id
检索文档
我使用Cloudant作为云服务,它使用CouchDB。您可以使用电子邮件地址作为文档的id,因此无法添加具有相同电子邮件的其他文档。您还可以使用CouchDB的基本功能,即,在插入之前检查电子邮件是否存在。这两种方法都需要更晚的时间。如果是第一种情况,则可能有另一个coach节点具有尚未复制的冲突文档。在第二种情况下,两个用户可以将帐户添加到同一台服务器,但两个用户都将首先检查现有的电子邮件,然后添加他们的帐户 添加视图需要添加设计文档,其中包含计算视图的定义。您可以使用
map
函数创建索引,如下所示:
function (doc) {
if (!doc.email) return;
emit(doc.email, doc);
}
您可以使用:
请注意,电子邮件比较并不像您预期的那么简单:
另外,我意识到有一种方法可以获取数据库中的所有文档,但我不想获取所有文档并在可能的情况下循环使用它们。好的,我似乎需要使用JQuery库-这听起来可能很愚蠢,但我在任何地方都找不到-你有直接下载链接吗?你可以从its下载JQuery。这是否与CouchDB的问题有关,因为我不知道jQuery如何帮助您查询数据库?嗯,我想我把自己弄糊涂了。当使用映射函数时,是否确实要使用类似以下格式将文档存储到数据库中:{u id:“{u design/application”,“{u rev:“1-C1687D17”,“views:{”viewname:{“map:”function(doc){…}”,“reduce:“function(key,values){…},然后从地址:/database/\u design/application/\u view/viewname中读取它。实际上,该视图类似于SQL视图。它根据另一个“表”计算“表”。您可以使用一些函数创建设计文档。为数据库中的每个文档运行函数
map
。它发出的是新索引的一部分。使用此索引非常快,但它的功能比SQL视图少。映射结果也可能是使用reduce进行数据聚合的源。其他功能允许操作生成的格式、部分文档更新以及一些数据验证。它们是CouchDB的精髓。看看OK,我回到了绘图板上,详细阅读了CouchDB的工作原理,我有一个简单的系统,它可以很好地遵循您列出的电子邮件比较标准。你知道电子邮件上是否有其他标准的列表吗?
http://localhost:5984/YOUR_DTABASE/_design/YOUR_DESIGN_DOCUMENT/_view/YOUR_VIEW?key='e-mail@addre.ss'