1

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

我可以在 CouchDB 中使用更新处理程序(在设计文档中)吗?

4

2 回答 2

0

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

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

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

哟可以在这里找到类似的问题。

于 2019-09-26T07:05:03.457 回答
0

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

然后你调用 smth like POST _design/whatever/_update/saveDependentDoc/doc-name,提供不同 _id的新文档作为请求正文。

您的_update函数将有效地接收两个文档作为输入(如果缺少约束文档,则为 null 和 newDoc)。然后该函数决定它应该做什么:返回接收到的文档以保留它,或者什么都不返回。

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

如果您肯定知道修订版,则此技巧仅适用于更新现有文档。

于 2019-09-26T22:46:56.983 回答