PouchDB - 添加现有文档的附件

时间:2014-05-30 15:19:28

标签: pouchdb

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

db.putAttachment()

我收到了冲突错误...

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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);
            }

        });


    }



});  
}

答案 2 :(得分:0)

您需要传递附件将放入的文档的_id_rev

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

其中qFile.data表示blob,在这种情况下为64位数据字符串,而type表示模仿类型,例如'image / png'或'text / json'等。

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

和一个很好的但过时的实时示例: https://pouchdb.com/guides/attachments.html