在nano中更新CouchDB文档

6
我需要获取一个文档,更改/插入/删除一些字段,并将其放回。

“放置”操作需要文档的当前修订版本,但在nano中我找不到任何以修订版本作为参数并将文档插入到数据库中的函数。

我该如何使用nano实现这个功能?
1个回答

9
注意:这是通用算法,与任何库无关,因为nano的insert()方法没有自动更新文档的功能。
获取文档,保存当前版本,应用更改并尝试使用保存的修订版本号发送文档。
确保处理可能发生的409冲突响应,这种情况会在文档同时被修改时发生。
在这种情况下,您应该重新获取文档,保存修订版本号,重新应用更改,然后再尝试使用新修订版发送文档。
因此,这里是算法:
  1. 获取文档
  2. 保存_rev
  3. 应用更改
  4. 尝试使用保存的_rev发送更新后的文档
  5. 如果出现409,则返回步骤1

查看CouchDB HTTP文档API的PUT章节和CouchDB的复制和冲突维基页面以获取更多信息。您还可以找到Nano(Node.js的CouchDB客户端)如何更新文档有帮助。


我知道我需要修订。问题是,nano中带有“修订”参数的函数是什么。正确答案却是关于另一个问题的。 - DSblizzard
1
这是你问题的正确答案。只需阅读nano的文档API文档即可。只有一个insert()方法,这意味着您必须在要插入的文档上设置适当的修订版本。 - Octavian Helm
请问您能展示一下代码吗? - DSblizzard
这基本上是与您已经拥有的完全相同的代码,但您只需将获取文档时获得的 _rev 添加到要插入的更新文档中即可。 - Octavian Helm
抱歉,我现在意识到它不是参数,而是带有值的字段。 - DSblizzard
这是一个很棒的答案。更多细节可以在这篇博客文章中找到:如何使用Nano(Node.js的CouchDB客户端)更新文档 - dscape

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接