2014-12-08 79 views
1

我可以成功創建一個indexeddb數據庫並將數據加載到該數據庫中。我也可以從同一頁面的數據庫中讀取數據。然後我嘗試從我網站上另一個頁面的數據庫中讀取數據。如何檢查ydn.db數據庫是否可以使用?

db = new ydn.db.Storage('test'); 
db.keys('items').done(function(d) { 
    alert(d); 
}); 

這是行不通的。我只是得到一個空的結果。但是,如果我直接將上面的代碼輸入到Chrome的JavaScript控制檯中,它確實有效。環顧四周後,似乎數據庫可能沒有準備好。所以我試試這個。

db = new ydn.db.Storage('test'); 
db.addEventListener('ready', function() { 
    db.keys('items').done(function(d) { 
     alert(d); 
    }); 
}); 

但是,這給了我在控制檯中的以下錯誤。

Uncaught TypeError: undefined is not a function 

錯誤顯示爲以下代碼行。

db.addEventListener('ready', function() { 

我不知道我在這裏錯過了什麼。

回答

1

打開數據庫連接是異步操作。在連接數據庫時調用此事件偵聽器,並在之後進行必要的架構更改。這是由數據庫實例製作的第一個異步函數調用

如果數據庫打開失敗,則使用error事件對象調用回調。可以添加多個偵聽器。在準備好這個事件處理程序之後,應該調用大量數據庫寫入操或者ready事件可以通過DOM事件監聽器模式進行監聽。

可以在類似的方式添加數據庫準備好事件偵聽器:

var db = new ydn.db.Storage('test'); 
db.onReady(function(e) { 
    if (e) { 
    if (e.target.error) { 
     console.log('Error due to: ' + e.target.error.name + ' ' + e.target.error.message); 
    } 
    throw e; 
    } 
    db.put('statement1', large_data); 
}); 
相關問題