2012-07-18 2 views
0

저는 IndexedDB에서 일하고 있습니다. jquery 모바일 앱에서 값을 만들고 채 웁니다.값이 이미 indexedDB에 있는지 확인합니다.

이제 처음으로 페이지에 올 때 내 DB에서 값을 사용할 수 있는지 확인해야합니다. 그렇다면 "존재"또는 "존재하지 않음"이라고 표시해야합니다. 아래 코드를 작성했습니다. document.ready에서이 함수를 호출했습니다.

Uncaught TypeError : Cannot call method 'transaction' of null 

어떤 제안이 큰 도움이 될 것입니다 아래의 오류 나 결과

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! 

    }; 
    } 

. 미리 감사드립니다 !!!

+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); 
    } 
} 
관련 문제