2017-02-15 5 views
0

私は、ドキュメントのデータを更新しようとしていますが、ユーザーが新しいものを選択していない限り、そのドキュメントの既存の添付イメージは更新しません。既存の添付ファイルでドキュメントを更新するにはどうすればよいですか?

既存のイメージをコピーして新しいドキュメントオブジェクトに配置するにはどうすればよいですか?

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); 
}); 

}

答えて

3

あなたは{attachments: false}db.get()を呼び出した場合、あなたはどんな非添付ファイル付きの同じ文書が必要に変化することを再挿入することができます。添付ファイルはJSouchにstub:trueとしてマークされ、PouchDBは "aha、チェックサムをチェックするだけで、添付ファイル全体を再挿入する必要はありません"と解釈します。

あなたのケースでは、ブロブが変更されていない場合はdb.get('id', {attachments: false})とし、変更を加えて同じ文書を再度挿入してください。

+0

ありがとうNolan!あなたは非常に高く評価されています! –

+0

私はこれを助けてくれました: for(var k in data)doc [k] = data [k]; –

関連する問題