2014-03-03 81 views
3

我是新來的使用inxededdb,並試圖從商店獲取數據。商店包含數據,但由於某些原因,代碼在嘗試設置var tx後停止。如果我缺少任何東西,請告訴我。下面是我想獲得這本書的功能:爲什麼db.transaction不能與indexeddb一起使用?

function getBook(){ 
    var tx = db.transaction("book", "readonly"); 
    var store = tx.objectStore("book"); 
    var index = store.index("by_getid"); 

    var request = index.get("<?php echo $_GET['book'] ?>"); 
    request.onsuccess = function() { 
     var matching = request.result; 
     if (matching !== undefined) { 
     document.getElementById("text-container").innerHTML = matching.text; 
     } else { 
     alert('no match'); 
     report(null); 
     } 
    }; 
} 

解決版本:

function getBook(){ 
    var db; 
    var request = indexedDB.open("library", 1); 

    request.onsuccess = function (evt) { 
    db = request.result; 
    var transaction = db.transaction(["book"]); 
    var objectStore = transaction.objectStore("book"); 
    var requesttrans = objectStore.get(<?php echo $_GET['book'] ?>); 

     requesttrans.onerror = function(event) { 

     }; 

     requesttrans.onsuccess = function(event) { 
      alert(requesttrans.result.text); 
     }; 

    }; 
} 

回答

4

該問題可能是您的數據庫變量。您可能正在訪問連接對象的關閉或空實例。

嘗試改爲在函數內部創建數據庫連接。不要使用全局數據庫變量。

+0

它的工作:)我檢查了var數據庫,它是未定義我做的是我重新打開函數中的連接:) – wayzz

0

index.get產量的主鍵。您必須使用生成的主鍵獲取記錄值。

+0

我不認爲這是我設置var tx後發出警報的問題,並且alert()永遠不會彈出,因此設置var tx後代碼崩潰。 – wayzz

+0

好的。你有更大的問題。更好地開始我的圖書館,YDN - DB。 –

相關問題