2017-10-11 45 views
0

在Chrome上使用IndexedDB成功開發之後,所有寫入操作都停止工作,沒有發生任何錯誤。 Safari的一切都很好。IndexedDB在Chrome中放入/添加失敗(針對所有網站)

這裏是行不通的一個簡單的例子:

var db = null; 
var req = indexedDB.open("TestDb", 1); 

req.onsuccess = function(event) { 
    db = event.target.result; 
    db.onerror = function(event) { 
     error('Error: ', event.target.errorCode); 
    }; 

    var os = db.transaction(['users'], "readwrite").objectStore('users'); 
    req = os.put({id: 2, name: 'Benoît'}); 

    req.onsuccess = function (event) { 
     console.log('Put success', event.target.result); 

     var os = db.transaction(['users'], "readwrite").objectStore('users'); 
     var req = os.get(2); 
     req.onsuccess = function(event) { 
      console.log('Get success', event.target.result); 
     } 

    }; 
    req.onerror = function (event) { 
     console.log('error', event); 
    }; 
}; 

req.onupgradeneeded = function(ev) { 
    console.log('db upgradeneeded', ev); 
    var db = ev.target.result, objectStore; 

    if (ev.oldVersion < 1) { 
     objectStore = db.createObjectStore('users', {keyPath: "id"}); 
     objectStore.createIndex("name", "name", {unique: false}); 
    } 
}; 

在控制檯日誌而導致:

認沽成功2

獲得成功未定義

+0

對於其他調試,請將oncomplete和onabort處理程序添加到事務中: 'var tx = db.transaction(['users'],「readwrite」),os = tx.objectStore('users'); tx.oncomplete = function(){console.log('completed'); }; tx.onabort = function(){console.log('aborted'); };' –

+0

@theredled在只使用一個事務時會發生錯誤嗎? – Josh

+0

謝謝你們,但我只有一個磁盤空間問題。應該拋出一個錯誤,但無論如何,沒關係! – theredled

回答

1

其實有沒有磁盤上有足夠的空間。

正如@Joshua Bell所說,查詢成功但事務中止,因此您需要注意transaction.onabort以引發錯誤消息。