Существует общий пример кода (измененная версия приведена ниже), показывающий, как создавать хранилища объектов при открытии базы данных idb. Функция обратного вызова idb.open
проверяет, существует ли каждое хранилище объектов, и создает его в случае его отсутствия.
Я заметил, что эта функция вызывается ТОЛЬКО, когда база данных не существует, поэтому в чем причина проверки? существование каждого хранилища объектов, если функция вызывается только тогда, когда эти хранилища объектов точно не существуют?
class indexeddb {
static OpenIDB() {
return idb.open('dbName', 1, function(upgradeDb) {
if (!upgradeDb.objectStoreNames.contains('objectStore1')) {
const store1 = upgradeDb.createObjectStore('objectStore1', {keyPath: 'someKey'});
}
if (!upgradeDb.objectStoreNames.contains('objectStore2')) {
const store2 = upgradeDb.createObjectStore('objectStore2', {keyPath: 'someKey'});
}
if (!upgradeDb.objectStoreNames.contains('objectStore3')) {
const store3 = upgradeDb.createObjectStore('objectStore3', {keyPath: 'someKey'});
}
});
}; //class continues...
Зачем мне это нужно? Мне нужно добавить новое хранилище объектов в существующую базу данных в моем веб-приложении, но это кажется невозможным.