2016-10-07 3 views
1

데이터베이스에서 속성을 읽는 스크립트를 만듭니다. 프로젝트 아키텍처로 인해 JS에서 구현되는 것이 가장 쉽습니다.IndexedDB "요청한 데이터베이스 객체를 찾을 수 없으므로 작업을 수행하지 못했습니다."

IndexedDB를 사용하고 있는데 데이터베이스를 찾을 수 있지만 objectStore에서 속성을 가져 오려고하면 오류가 발생합니다 (테이블에 액세스 할 수없는 것 같습니다) :

Firefox : "NotFoundError : 요청한 데이터베이스 개체를 찾을 수 없기 때문에 작업을 수행하지 못했습니다. 예를 들어 개체 저장소가 없지만 열었습니다."

크롬 : NotFoundError : 'IDBDatabase'에서 'transaction'을 실행하지 못했습니다. 지정한 개체 저장소 중 하나를 찾을 수 없습니다.

내 코드 :

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

기존 SQLite 파일에서 읽으려면 IndexedDB를 사용하려는 것 같습니다. 그게 효과가 없을거야. IndexedDB는 브라우저 내에 자체적으로 포함되어 있으므로 외부 파일과 관련이 없습니다. 객체 저장소를 생성하는 유일한 방법은 onupgradendeeded에서 수행하는 것입니다. 그런 다음 데이터를로드하는 코드도 작성해야합니다.

코르도바 어플 인 경우 this 또는 this이 더 있습니다.

관련 문제