gpt4 book ai didi

javascript - 版本更改事务在 indexedDB 中的升级需要事件处理程序错误中中止

转载 作者:行者123 更新时间:2023-11-29 19:33:27 26 4
gpt4 key购买 nike

我正在尝试使用 IndexedDB 创建两个对象存储并将数据存储在其中。第一个对象存储是用数据创建的,但是在创建第二个对象存储并存储数据之后,处理程序会出错并检查 evt.srcElement --> IDBOpenDBRequest--> error : DOM Error, message : "Version Change Transaction在升级需要的事件处理程序中中止”和名称:“ABortError”

    var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB ||     window.msIndexedDB;
var IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction;
var db;
var request = indexedDB.open("xxMobileDB", 1);
request.onsuccess = function (evt) {
db = request.result;
var version = parseInt(db.version);
db.close();
var request1 = indexedDB.open("xxMobileDB", version + 1);
request1.onupgradeneeded = function (evt)
{

var objectBOMStore = evt.currentTarget.result.createObjectStore(
"BOM", { keyPath: "PackNumber", autoIncrement: true });

objectBOMStore.createIndex("PackNumber", "PackNumber", { unique: false });

for (var i = 0; i < BOMData.length; i++)
{
var obj = BOMData[i];
objectBOMStore.add(obj);
}

};
request1.onsuccess = function (evt)
{
evt.target.result.close();
};
request1.onerror = function (evt) {
console.log("IndexedDB error: " + evt.target.errorCode);
};

};

request.onerror = function (evt) {
console.log("IndexedDB error: " + evt.target.errorCode);
};

request.onupgradeneeded = function (evt)
{
var objectStore = evt.currentTarget.result.createObjectStore(
"Pack", { keyPath: "PackId", autoIncrement: true });

objectStore.createIndex("PackId", "PackId", { unique: true });

for (var i = 0; i < packData.length; i++)
{
var obj = packData[i];
objectStore.add(obj);
}


};

填充 objectBOMStore 后,代码进入 request1.error 。对象存储包的创建没有任何错误,我可以在 Chrome-->Resources--> IndexedDB

中看到它们

最佳答案

我认为包号不是唯一的。由于我的 KeyPath 是 PackNumber,因此 PackNumber 值需要是唯一的。我使用了另一个独特的列来解决问题。

     var objectBOMStore = evt.currentTarget.result.createObjectStore(
"BOM", { keyPath: "PackNumber", autoIncrement: true });

我使用了 BOMID,这是一个唯一的编号。

     var objectBOMStore = evt.currentTarget.result.createObjectStore(
"BOM", { keyPath: "BOMID", autoIncrement: true });

关于javascript - 版本更改事务在 indexedDB 中的升级需要事件处理程序错误中中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26283524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com