2012-07-18 6 views
0

Я работаю в IndexedDB. Я могу создавать, заполнять и удалять значения в мобильном приложении jquery.Поиск, если значение уже существует в indexedDB

Теперь, когда я впервые прихожу на страницу, я должен проверить, доступно ли значение в моей БД. Если это так, мне нужно отобразить «Exists» или «Not Exists», если это не так. Я написал код ниже. Я вызвал эту функцию на document.ready.

myapp.indexedDB.existsInFavourites = function(value){ 
    var db = myapp.indexedDB.db; 
    var request = db.transaction(["todo"]).objectStore("todo").get(typeid); 
    request.onerror = function(event) { 
     // Handle errors! 
    }; 
    request.onsuccess = function(event) { 
     // Do something with the request.result! 

    }; 
    } 

что приводит меня в следующей ошибки

Uncaught TypeError : Cannot call method 'transaction' of null 

Любое предложение было бы большим подспорьем. Заранее спасибо!!!

+0

Это сообщение об ошибке предполагает, что 'myapp.indexedDB.db' является' null', что, очевидно, исключает возможность совершения на нем транзакции. Сначала вы должны исправить эту проблему. – dumbmatter

ответ

0

Проблема выглядит, как он относится к линии:

var db = myapp.indexedDB.db; 

Вам необходимо подключиться к базе данных, а затем выполнить работу в функции обратного вызова. Вкратце, что-то вроде:

// var typeid = ...; 

// Request a connection 
var openRequest = indexedDB.open(name,version); 
var openRequest.onsuccess = function(event) { 
    var db = event.target.result; 
    // event.target === this and event.target === openRequest 
    // so use whatever you prefer 

    // Now use the 'db' variable to do the work 
    // Note: removed unnecessary brackets around todo 
    var getRequest = db.transaction("todo").objectStore("todo").get(typeid); 
    getRequest.onsuccess = function(event) { 
     var myResult = event.target.value; 
     // event.target === this, and event.target === getRequest 

     console.log('Got %s !', myResult); 
    } 
} 
Смежные вопросы