В настоящее время я запускаю IndexedDB с 3 объектными магазинами и следующую функцию onupgradeneeded
.Держите IndexedDB существующие данные ObjectStore при обновлении
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-й объект-магазин. То, что я меняю версию и добавляю 4-ю запись в onupgradeneeded
.
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 потерять все свои данные.
Как следует искать onupgradeneeded
, чтобы сохранить данные уже существующих объектов?