2016-10-07 1 views
1

Я создаю скрипт для чтения атрибута из базы данных - из-за архитектуры проекта это проще всего, если это реализовано в JS.IndexedDB «Не удалось выполнить операцию, потому что запрошенный объект базы данных не найден».

Я использую IndexedDB, и я могу найти базу данных успешно, но когда я пытаюсь получить атрибут из objectStore, я получаю сообщение об ошибке (похоже, я не могу получить доступ к таблице):

Firefox: «NotFoundError: операция завершилась неудачно, потому что запрошенный объект базы данных не найден. Например, хранилище объектов не существует, а было открыто».

Хром: NotFoundError: Не удалось выполнить транзакцию в 'IDBDatabase': один из указанных хранилищ объектов не найден.

Мой код:

var request = window.indexedDB.open("/app_name/database.sqlite", 1); 
request.onsuccess = function(event) { 
    console.log("Found Database"); 
    db = event.target.result; 

    var transaction = db.transaction(["TABLE"], "readonly"); 
    var objectStore = transaction.objectStore("TABLE"); 
    var ob = objectStore.get(String(ATTRIBUTE)); 

    ob.onsuccess = function(e) { 
     console.log("Got ATTRIBUTE") 
    } 
    ob.onerror = function(e) { 
     console.log("Have not got ATTRIBUTE") 
    } 

} 
request.onerror = function(event) { 
    console.log("Database not found"); 
} 

Ошибка возникает на линии var transaction = db.transaction(["TABLE"], "readonly");.

ТАБЛИЦА существует - когда база данных открыта в средстве просмотра, атрибут есть.

Я не использовал .onupgradeneeded, так как я не создаю никаких новых объектов, а просто пытаюсь их прочитать.

ответ

1

Возможно, вы пытаетесь использовать IndexedDB для чтения из существующего файла SQLite. Это не сработает. IndexedDB является автономным в браузере, он не имеет ничего общего с внешними файлами. Единственный способ создания хранилищ объектов - сделать это в onupgradendeeded, а затем вам также придется написать код для загрузки данных в них.

Если это приложение в Кордове, возможно, this или this - это больше, что вы ищете.

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