1.Uncaught DOMException: Failed to execute ‘transaction’ on ‘IDBDatabase’: A version change transaction is running.
出错代码块:
错误原因,有一个事物在运行,不能打开第二个事物
var request = indexedDB.open('sql', 2);
request.onupgradeneeded = function(event) {
var db = event.target.result;
var objectStore = db.createObjectStore("customers", { keyPath: "ssn" });
var customerObjectStore = db.transaction("customers", "readwrite")
.objectStore("customers")
.add({ id: "555-55-5555", name: "Donna", age: 32, email: "donna@home.org" });
};
解决办法:
var request = indexedDB.open('sql', 2);
request.onupgradeneeded = function(event) {
var db = event.target.result;
var objectStore = db.createObjectStore("customers", { keyPath: "ssn" });
objectStore.transaction.oncomplete = function(event) {
var customerObjectStore = db.transaction("customers", "readwrite")
.objectStore("customers")
.add({ id: "555-55-5555", name: "Donna", age: 32, email: "donna@home.org" });
};
};
将transaction相关的代码写在objectStore.transaction.oncomplete中
2.Uncaught TypeError: Cannot read property ‘xxx’ of undefined
因为indexDB代码都是异步代码,所以有些还没有定义部分的代码可能会优先执行,导致这个变量为undefined
3.onupgradeneeded比onsuccess先执行