내 indexedDB에 이미지 (2-3MB Base64 문자열)를 추가하면 iPad/Safari의 웹 응용 프로그램과 충돌이 발생합니다 (데스크톱의 Chrome에서 잘 작동 함). 삽입을 시도이미지가있는 레코드를 추가 할 때 IndexedDB가 충돌 함
InvalidStateError (DOM IDBDatabase Exception 11): Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.
객체는 :
{
categoryNo: "C0103"
imageData: [{base64Image: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD…aUOUbIHsTUsVwQRZJF8/94dMe9TxKzK7ugwhK1s4su8T/2Q==",
imageUploaded: false
}
나는 문자열을 저장하기 위해 색인화 사용하고 내가 base64로 이미지와 개체를 추가 할 바로 그 때 그것은 잘 작동합니다.
bcUpdateIDB: function(sInspectionNo, sLineNo, sCategory, oRecord){
var oController = this;
var objectStore = oController.myDB.transaction("imageDB").objectStore("imageDB");
var items = [];
objectStore.openCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (cursor) {
items.push(cursor.value);
cursor.continue();
} else {
dataRecords = items;
var oTransaction = oController.myDB.transaction(["imageDB"], "readwrite");
var oDataStore = oTransaction.objectStore("imageDB");
var recordFound = false;
for (var i=0; i<dataRecords.length;i++){
var oDataRecord = dataRecords[i];
if(oDataRecord.lineNo === sLineNo && oDataRecord.inspectionNo === sInspectionNo && oDataRecord.category === sCategory){
recordFound = true;
oDataStore.delete(oDataRecord.id);
if(oRecord.imageData.length > 0){
oDataStore.add(oRecord);
}
}
}
if(!recordFound){
oDataStore.add(oRecord);
}
}
};
Safari에서는 '.add()'에 걸려있는 것처럼 보입니다. Chrome에서 작동합니다. 또한, 다른 트랜잭션에 추가/삭제 작업을 추가하면 잘 작동합니다.
블롭과 파일도 훨씬 더 잘 저장할 수 있어야합니다. – Endless