Функция idb (upgradeDb) не вызывается, когда база данных существует - PullRequest
0 голосов
/ 24 января 2020

Существует общий пример кода (измененная версия приведена ниже), показывающий, как создавать хранилища объектов при открытии базы данных 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...

Зачем мне это нужно? Мне нужно добавить новое хранилище объектов в существующую базу данных в моем веб-приложении, но это кажется невозможным.

1 Ответ

0 голосов
/ 24 января 2020

Увеличение версии базы данных решило проблему. Процесс размещения вашего вопроса в StackOverflow обладает поразительной силой. Я оставляю это здесь на случай, если кто-то еще застрянет в его собственной коробке.

...