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



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

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

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

如果您希望文档单一性基于文档 ID,则应将"name"属性值包含在文档 ID 中。

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

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

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

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

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

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

此技巧仅适用于更新现有文档,前提是您肯定知道修订版。

最新更新