是否可以在现有文档中添加附件?当我使用:
db.putAttachment()
我收到一个冲突错误...
我总是发现创建一个 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);
}
});
}
});
}
当您将附件附加到文档时,您仍然需要传入rev
现有文档的 ,因为它被视为对文档的修改。
您需要传递将放置附件的文档的_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