CouchDB检查验证函数中是否存在文档

CouchDB检查验证函数中是否存在文档,couchdb,design-documents,Couchdb,Design Documents,我希望在允许将新文档添加到数据库之前,先查看数据库中是否存在名称字段“name”设置为“a name”的文档 我认为在CouchDB中使用更新处理程序(在设计文档中)可以实现这一点吗?似乎您正在CouchDB中寻找唯一的约束。CouchDB支持的唯一唯一约束基于文档ID 如果希望文档唯一性基于“名称”属性值,则应将其包含在文档ID中 设计文档中定义的验证文档更新功能只能使用正在创建/更新/删除的文档的数据,不能使用数据库中其他文档的数据 您可以找到一个类似的问题。似乎您正在CouchDB中寻找一

我希望在允许将新文档添加到数据库之前,先查看数据库中是否存在名称字段“name”设置为“a name”的文档


我认为在CouchDB中使用更新处理程序(在设计文档中)可以实现这一点吗?

似乎您正在CouchDB中寻找唯一的约束。CouchDB支持的唯一唯一约束基于文档ID

如果希望文档唯一性基于“名称”属性值,则应将其包含在文档ID中

设计文档中定义的验证文档更新功能只能使用正在创建/更新/删除的文档的数据,不能使用数据库中其他文档的数据


您可以找到一个类似的问题。

似乎您正在CouchDB中寻找一个独特的约束。CouchDB支持的唯一唯一约束基于文档ID

如果希望文档唯一性基于“名称”属性值,则应将其包含在文档ID中

设计文档中定义的验证文档更新功能只能使用正在创建/更新/删除的文档的数据,不能使用数据库中其他文档的数据


您可以找到一个类似的问题。

这并不广为人知,但
\u update
端点允许返回id与请求不同的文档。这意味着,在您的情况下,您需要一个唯一的文档,比如
\u id:“doc name”
,这将作为一个约束

然后调用smth,比如
POST\u design/whatever/\u update/saveDependentDoc/doc name
,将具有不同
\u id
的新文档作为请求主体

您的
\u update
函数将有效地接收两个文档作为输入(如果缺少约束文档,则为null和newDoc)。然后函数决定应该做什么:返回接收到的文档以将其持久化,或者不返回任何内容

这个解决方案并不是你问题的完整答案,但在某些情况下可能会有所帮助


这个技巧只适用于更新现有文档,如果您知道修订版,这是肯定的。

这不是众所周知的,但是
\u update
端点允许返回与请求的
\u id
属性不同的文档。这意味着,在您的情况下,您需要一个唯一的文档,比如
\u id:“doc name”
,这将作为一个约束

然后调用smth,比如
POST\u design/whatever/\u update/saveDependentDoc/doc name
,将具有不同
\u id
的新文档作为请求主体

您的
\u update
函数将有效地接收两个文档作为输入(如果缺少约束文档,则为null和newDoc)。然后函数决定应该做什么:返回接收到的文档以将其持久化,或者不返回任何内容

这个解决方案并不是你问题的完整答案,但在某些情况下可能会有所帮助

这个技巧只适用于更新现有文档,如果您知道修订版的话