以nano为单位更新CouchDB文档

时间:2012-07-26 04:47:52

标签: couchdb couchdb-nano

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

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

我怎么能用nano做到这一点?

1 个答案:

答案 0 :(得分:7)

注意:这是一般算法,它不是特定于任何库,因为nano's insert()方法不提供任何自动更新文档的内容。

获取文档,保存当前版本,应用更改并尝试发送包含已保存修订号的文档。

确保处理同时更改文档时可能出现的409个冲突响应。

在这种情况下,您应该重新获取文档,保存修订号,重新应用更改,然后尝试使用新版本再次发送。

所以这是算法:

  1. 获取文件
  2. 保存_rev
  3. 应用更改
  4. 尝试使用已保存的_rev
  5. 发送更新的文档
  6. 如果是409
  7. ,请转到步骤1

    查看CouchDB HTTP Document API's PUT section和CouchDB的Replication and Conflicts维基页面,了解有关该问题的更多信息。您可能还会发现How To Update A Document With Nano (The CouchDB Client for Node.js)有帮助。