2014-07-22 4 views
0

IndexedDB 및 sencha touch 프레임 워크를 처음 사용합니다. sencha에서 IndexedDB를 배우면서 문제를 발견했습니다. 해결책은 많이 찾았지만 찾을 수 없었습니다.indexedDB : 트랜잭션 호출 기능 호출

내가 당신에게 그것은

Uncaught TypeError: Cannot read property 'transaction' of undefined 

어떤 도움을 주시면 감사하겠습니다라고 예외가 발생

 var db; 
     var myRequest = indexedDB.open("testDB", 8); 

     myRequest.onupgradeneeded = function (e) { 
      console.log("upgrading..."); 
      var thisDB= e.target.result; 
      if(!thisDB.objectStoreNames.contains("FirstOS")){ 
      thisDB.createObjectStore("FirstOS"); 
      } 
     }; 

     myRequest.onsuccess = function (e) { 
      console.log("success..."); 
      db= e.target.result; 
     }; 

     myRequest.onerror = function (e) { 
      console.log("error occured"); 
     }; 


    var transaction = db.transaction(["FirstOS"],"readwrite"); 
    var store= transaction.objectStore("FirstOS"); 

첫 번째 코드 내 덩어리를 보여 드리죠. 고맙습니다.

답변

1

이 오류 메시지는 indexedDB 사용과 관련이 없습니다. indexedDB.db.transaction()을 호출하면이 오류 메시지가 생성됩니다. 이 오류는 초기화되지 않은 객체의 메소드를 호출하려고 할 때 발생합니다. 이 오류를 방지하려면 var db을 onsuccess 콜백 함수의 범위를 벗어나 사용하지 마십시오. db=event.target.result;을 사용하지 마십시오.

이 오류는 비동기 기능에 익숙하지 않기 때문에 발생합니다. indexedDB를 계속 사용하기 전에 비동기 코드를 작성하는 방법에 대해 자세히 알아야합니다. 사실

+0

:

이 질문은 몇 가지 비슷한 질문의 중복 실수로 잘못된 버전의 코드를 게시했습니다. 지금 수정했습니다. 감사합니다. 비동기 함수에 대해 배우게됩니다. 감사 . –