我目前正在运行带有3个ObjectStore和以下onupgradeneeded
函数的IndexedDB。
var openRequest = indexedDB.open("DB_v3", 1);
openRequest.onupgradeneeded = function(e) {
var thisDB = e.target.result;
if(!thisDB.objectStoreNames.contains("ObjectStore1")) {
var objectStore = thisDB.createObjectStore("ObjectStore1", {autoIncrement:true});
objectStore.createIndex("name", "name", {unique:true});
}
if(!thisDB.objectStoreNames.contains("ObjectStore2")) {
//create objectstore & index as above
}
if(!thisDB.objectStoreNames.contains("ObjectStore3")) {
//create objectstore & index as above
}
}
我现在要做的是添加第4个ObjectStore。
我改变版本并在onupgradeneeded
中添加第4个条目。
var openRequest = indexedDB.open("DB_v4", 1);
openRequest.onupgradeneeded = function(e) {
//same as above
if(!thisDB.objectStoreNames.contains("ObjectStore4")) {
//create objectstore & index as above
}
}
所有这一切都运行正常,但问题是,只要调用onupgradeneeded
,现有的ObjectStores就会丢失所有数据。
为了保留现有ObjectStore的数据,onupgradeneeded
如何查看?
答案 0 :(得分:4)
indexedDB.open("DB_v3", 1)
在版本1打开名为DB_v3的数据库。
indexedDB.open("DB_v4", 1)
在版本1打开名为DB_v4的数据库。
具有不同名称的数据库是完全独立的。你没有升级,你只是创建了两个不同的数据库。如果要升级现有数据库,请保持名称相同并增加版本。然后旧的数据仍然存在。