我正在尝试更新文档的数据,但不会更新文档中现有的附加图像,除非用户选择了新图像。
如何复制现有图像并将其放在新文档对象中?
function updateInspection() {
console.log('updateInspection started');
var data = $('#inspectionForm').serializeArray().reduce(function(obj, item) {
obj[item.name] = item.value;
return obj;
}, {});
console.log(' docID: ' + data._id);
console.log(' docREV: ' + data._rev);
if (!$('input[type=file]')[0].files[0]) {
console.log(' Get doc Attachment First!');
local_db.get(data._id,{attachments: true}, function(err, doc) {
if (err) {
return console.log(err);
} else {
console.log('doc._attachments: ' +doc._attachments.cover_image.content_type);
data._attachments = doc._attachments; // THIS IS NOT WORKING
}
});
}
if ($('input[type=file]')[0].files[0]) {
console.log(' Add/Update Cover Image Attachment!');
cover_image_name = $('input[type=file]')[0].files[0].name;
console.log(' cover_image_name: ' + cover_image_name);
var input = document.querySelector('input[type=file]');
var file = $('#coverImage').prop('files')[0];
data[ "_attachments" ] = {
"cover_image": {
"content_type": "image/jpg",
"data": file
}
};
}
local_db.put(data).then(function (result) {
// handle result
console.log('Successfully posted '+result.id);
console.log('New_rev '+result.rev);
$("input#_rev").val(result.rev);
}).catch(function (err) {
console.log(err);
});
}
答案 0 :(得分:3)
如果您使用db.get()
致电{attachments: false}
,那么您可以重新插入同一文档,并附上您想要的任何非附件更改。附件将在JSON中标记为stub:true
,PouchDB将其解释为“aha,我只需检查校验和,我不需要重新插入整个附件blob。”
因此,在您的情况下,如果blob未更改,则执行db.get('id', {attachments: false})
,然后使用更改重新插入相同的文档。