【发布时间】:2012-07-24 15:18:57
【问题描述】:
我需要获取一个文档,更改/插入/删除一些字段并将其放回原处。
"put" 操作需要文档的当前修订版,但在 nano 中我找不到任何将修订版作为参数并将文档插入数据库的函数。
如何用 nano 做到这一点?
【问题讨论】:
标签: couchdb couchdb-nano
我需要获取一个文档,更改/插入/删除一些字段并将其放回原处。
"put" 操作需要文档的当前修订版,但在 nano 中我找不到任何将修订版作为参数并将文档插入数据库的函数。
如何用 nano 做到这一点?
【问题讨论】:
标签: couchdb couchdb-nano
注意:这是通用算法,它并不特定于任何库,因为 nano's insert() 方法不提供任何自动更新文档的功能。
获取文档,保存当前修订,应用您的更改并尝试发送带有已保存修订号的文档。
确保处理同时更改文档时可能发生的 409 冲突响应。
在这种情况下,您应该重新获取文档,保存修订号,重新应用您的更改,然后尝试使用新修订再次发送。
所以这里是算法:
查看CouchDB HTTP Document API's PUT section 和CouchDB 的Replication and Conflicts wiki 页面以获取有关此问题的更多信息。您可能还会发现 How To Update A Document With Nano (The CouchDB Client for Node.js) 很有帮助。
【讨论】:
inser() 方法,这意味着您必须在要插入的文档上设置正确的修订版。
_rev 添加到要插入的更新文档中即可。