2017-10-11 1 views
0

Nach einer erfolgreichen Entwicklung mit IndexedDB in Chrome haben alle Schreibvorgänge einfach aufgehört zu arbeiten, ohne dass ein Fehler aufgetreten ist. Mit Safari ist alles in Ordnung.IndexedDB put/add in Chrome (für alle Websites) fehlgeschlagen

ist hier eine einfache Probe funktioniert nicht:

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

in Konsolenprotokoll Resultierende:

Put Erfolg 2

tatsächlich bekommen Erfolg undefined

+0

Weitere Debuggen, fügen onComplete und onabort Handler zur Transaktion: 'var tx db.transaction ([ 'Benutzer'], "Lese-Schreib") = os = tx.objectStore ('Benutzer'); tx.oncomplete = function() {console.log ('abgeschlossen'); }; tx.onabort = function() {console.log ('abgebrochen'); }; ' –

+0

@theredled tritt der Fehler auf, wenn Sie nur eine Transaktion verwenden? – Josh

+0

Danke Jungs, aber ich hatte nur ein Problem mit dem Speicherplatz. Sollte einen Fehler aber trotzdem werfen, ist es in Ordnung! – theredled

Antwort

1

es nicht war Genug Platz auf der Festplatte.

Wie von @Joshua Bell, die Abfrage Erfolge, aber die Transaktion abgebrochen wird, so müssen Sie sehen transaction.onabort, um eine Fehlermeldung zu erheben.

Verwandte Themen