CouchDB检查文档是否在验证功能中

问题描述 投票:0回答:2

我想在数据库中是否存在一个将名称字段“名称”设置为“名称”的文档,然后才允许将新文档添加到数据库中。

是否可以在CouchDB中使用更新处理程序(在设计文档内部)?

couchdb design-documents
2个回答
0
投票

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

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

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

您可以找到类似的问题here


0
投票

这并不广为人知,但是_update端点允许返回带有_id道具不同于所请求的文档的文档。这意味着,在您的情况下,您需要有一个唯一的文档,例如_id:"doc-name",它将作为约束。

然后您像POST _design/whatever/_update/saveDependentDoc/doc-name一样调用smth,为新文档提供different _id作为请求正文。

您的_update函数将有效地接收两个文档作为输入(如果缺少约束文档,则为null和newDoc)。然后,该函数决定应执行的操作:返回接收的文档以将其保留,或不返回任何内容。

解决方案不能完全解决您的问题,但是在某些情况下可能会有所帮助。

当然,如果您知道修订版本,此技巧仅适用于更新现有文档。

© www.soinside.com 2019 - 2024. All rights reserved.