2014-08-03 6 views
2

Есть ли способ создать store в IndexedDB после того, как он был open и передал onupgradeneeded?Добавить магазин уже открыт IndexedDB

Я пробовал:

var store = db.createObjectStore('blah', {keyPath: "id", autoIncrement:true}); 

Получить эту ошибку:

InvalidStateError: A mutation operation was attempted on a database that did not allow mutations. 
+0

Вы пытаетесь создать хранилище объектов, которое уже существует? Используйте 'db.objectStoreNames.contains ('object-store-name')' для проверки. – Josh

+0

yep, появляется ложно – K3NN3TH

+0

Вам необходимо уточнить свой вопрос. Например, предложение «передано onupgradededed» не является правильным английским и не имеет технического смысла. – Josh

ответ

2

Я согласен с Джошем, вам необходимо уточнить свой вопрос.

Предлагаю вам попробовать другой подход. Удалите базу данных и создайте новую.

var request = window.indexedDB.deleteDatabase('somedb'); 
request.onerror = function(event) { 
    console.log('Error', event); 
} 
request.onsuccess = function(event){ 
    console.log('Success', event); 
    //recreate database 
    createNewDB(); 
} 

ПРИМЕЧАНИЕ

Вы должны close() соединение, прежде чем вы сможете удалить database и создать новый.

0

вы пробовали

var store = db.createObjectStore(...)

Я имею в виду, вы должны удалить слово 'OBJ'

Вы можете посмотреть на пример here

+0

не уверен, что вы хотите, чтобы я сделал здесь? вы просите меня попробовать и удалить магазин, которого там нет? – K3NN3TH

+0

О, нет, это не проблема, это просто способ мой метод, я должен просто удалить db.obj и поставить db для вопроса. Мое предположение: вы не можете добавлять таблицы в базу данных после ее завершения метод на основе градуированных. – K3NN3TH

Смежные вопросы