在允许将新文档添加到数据库之前,我想查看数据库中是否存在将名称字段“名称”设置为“名称”的文档。
我可以在 CouchDB 中使用更新处理程序(在设计文档中)吗?
在允许将新文档添加到数据库之前,我想查看数据库中是否存在将名称字段“名称”设置为“名称”的文档。
我可以在 CouchDB 中使用更新处理程序(在设计文档中)吗?
似乎您正在寻找 CouchDB 中的唯一约束。CouchDB 支持的唯一唯一约束是基于文档 ID。
如果您希望基于它的文档唯一性,您应该将您的“名称”属性值包含在文档 ID 中。
设计文档中定义的验证文档更新功能只能使用正在创建/更新/删除的文档的数据,不能使用数据库中其他文档的数据。
哟可以在这里找到类似的问题。
这并不广为人知,但_update
端点允许返回一个带有_id
不同于请求的 prop 的文档。这意味着,在您的情况下,您需要有一个唯一的文档 say _id:"doc-name"
,它将作为一个约束。
然后你调用 smth like POST _design/whatever/_update/saveDependentDoc/doc-name
,提供不同 _id
的新文档作为请求正文。
您的_update
函数将有效地接收两个文档作为输入(如果缺少约束文档,则为 null 和 newDoc)。然后该函数决定它应该做什么:返回接收到的文档以保留它,或者什么都不返回。
该解决方案不是您问题的完整答案,但在某些情况下可能会有所帮助。
如果您肯定知道修订版,则此技巧仅适用于更新现有文档。