请问有谁能告诉我如何在已经有版本号的indexeddb实例中添加一个新的对象存储。当我尝试创建一个新版本时,现有的对象存储会被删除。
我的版本号是'1',其中包含大约10个带有数据的对象存储。当我尝试使用新的版本号打开同一数据库时,我丢失了当前的数据和对象存储。
以下是我尝试过的方法。
var _upRequest = indexedDB.open("employees");
_upRequest.onsuccess = function (e) {
var thisDb = e.target.result;
var version = parseInt(thisDb.version)+1;
thisDb.close();
var openRequest = indexedDB.open("employees", version);
//handle setup, this will be run by Firefox
openRequest.onupgradeneeded = function (e) {
console.log("running onupgradeneeded");
var thisDb = e.target.result;
//Create Employee
if (!thisDb.objectStoreNames.contains("employee")) {
console.log("I need to make the employee objectstore");
var objectStore = thisDb.createObjectStore("employee", { keyPath: "id", autoIncrement: true });
objectStore.createIndex("searchkey", "searchkey", { unique: false });
}
thisDb.close();
}
openRequest.onsuccess = function (e) {
db = e.target.result;
db.onerror = function (e) {
alert("Sorry, an unforseen error was thrown.");
console.log("***ERROR***");
console.dir(e.target);
}
db.close();
}
}