【问题标题】:Updating a CouchDB document in nano [closed]在 nano 中更新 CouchDB 文档 [关闭]
【发布时间】:2012-07-24 15:18:57
【问题描述】:

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

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

如何用 nano 做到这一点?

【问题讨论】:

    标签: couchdb couchdb-nano


    【解决方案1】:

    注意:这是通用算法,它并不特定于任何库,因为 nano's insert() 方法不提供任何自动更新文档的功能。

    获取文档,保存当前修订,应用您的更改并尝试发送带有已保存修订号的文档。

    确保处理同时更改文档时可能发生的 409 冲突响应。

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

    所以这里是算法:

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

    查看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) 很有帮助。

    【讨论】:

    • 我知道我需要修改。问题是 nano 中带有“修订”参数的功能是什么。正确答案,但在另一个问题上。
    • 即使是您的问题,它也是正确的答案。只需阅读nano's Document API 文档即可。只有一个inser() 方法,这意味着您必须在要插入的文档上设置正确的修订版。
    • 你能显示代码吗?
    • 它与您已有的代码几乎完全相同,但您只需将获取文档时获得的 _rev 添加到要插入的更新文档中即可。
    • 对不起,我现在意识到,这不是参数,而是有值的字段
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多