0

是否可以在现有文档中添加附件?当我使用:

db.putAttachment()

我收到一个冲突错误...

4

3 回答 3

1

我总是发现创建一个 addOrUpdate() 类型的函数来处理袋子很有用。它基本上会尝试使用您传递的 id 找到一个条目,如果找不到,它将创建,否则将更新

function addPouchDoc(documentId, jsonString) {
var pouchDoc = {
    _id: documentId,
    "pouchContent": jsonString,
};

// var test = db.get(documenId, function(err, doc) { });  alert(test);
db.put(pouchDoc, function callback(err, result) {
    if (!err) {
        console.log('Successfully added Entry!');

    } else {
        console.log(err);
    }

});  
}

这是您应该始终调用的函数

function addOrUpdatePouchDoc(documentId, jsonString) {


var pouchDoc = {
    _id: documentId,
    "pouchContent": jsonString
};


db.get(documentId, function(err, resp) {

    console.log(err);
    if (err) {
        if (err.status = '404') {
            // this means document is not found
            addPouchDoc(documentId, jsonString);

        }
    } else {
        // document is found OR no error , find the revision and update it
        //**use db.putAttachment here**

        db.put({
            _id: documentId,
            _rev: resp._rev,
            "pouchContent": jsonString,
        }, function(err, response) {
            if (!err) {
                console.log('Successfully posted a pouch entry!');
            } else {
                console.log(err);
            }

        });


    }



});  
}
于 2014-05-30T20:39:35.373 回答
1

当您将附件附加到文档时,您仍然需要传入rev现有文档的 ,因为它被视为对文档的修改。

于 2014-05-30T17:46:34.653 回答
0

您需要传递将放置附件的文档的_id和。_rev

 db.putAttachment(_id.toString(), file_name, _rev.toString(), qFile.data, type )
  .then((result) =>{
      console.log(result)
      }).catch((err) => {
      console.log(err)
  });

whereqFile.data表示 blob,在这种情况下是 64 位数据字符串,type 表示 mimetype,例如 'image/png' 或 'text/json' 等。

https://pouchdb.com/api.html#save_attachment

还有一个很好但过时的现场示例: https ://pouchdb.com/guides/attachments.html

于 2018-10-11T01:57:16.710 回答