【问题标题】:Getting error while deleting a document in couchdb using node-couchdb-api使用 node-couchdb-api 在 couchdb 中删除文档时出错
【发布时间】:2012-05-05 22:23:49
【问题描述】:
var couchdb = require("couchdb-api");
var server = couchdb.srv(localhost, 5984, false, false);
var db = server.db("test");
var doc = db.doc("d5e1d042d579fcb1b3d4df07bc001f74");
doc.del(function (err, response) {
console.log(response);
console.log(err);
});

之后我遇到了问题,

null
{ error: 'bad_request', reason: 'Invalid rev format' }

但相应的文档具有正确的修订版本,如 1-135dc47e3492a980fa45b3af9eb22a97 和正确的数据。

请给我解决办法。

提前致谢。

【问题讨论】:

    标签: node.js couchdb


    【解决方案1】:

    我是这个模块的创建者。这里的问题是您试图删除没有修订号的文档。 (您的文档上有一个_rev 编号,但couchdb-api 没有该信息)在这些情况下,任何其他写入尝试也会触发此错误。

    您现在有几个选择:

    在尝试写入/删除之前获取当前文档

    doc.get(function (err, body) {
        doc.del(function (err, results) {
            // the delete will be successful
        });
    });
    

    在尝试写入/删除之前明确设置您的修订号

    doc.body._rev = "1-myrevisionnumber";
    doc.del(...);
    

    我将在此处添加一条更好的错误消息,并且我正在考虑添加一个特殊标志,该标志将告诉couchdb-api“强制”删除,即使它没有最新的修订号。 (即它会在del 之前调用get 以避免MVCC)

    【讨论】:

    • +1。 Dominic,如果您添加了该功能,请查看 Txn,它将为您带来大部分的功能(具有额外的功能,例如冲突时自动重试)github.com/iriscouch/txn
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    相关资源
    最近更新 更多