我可以成功创建一个indexeddb数据库并将数据加载到其中。我也可以从同一页面读取该数据库中的数据。然后我尝试从我网站上的另一个页面读取数据库。
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() {
我不确定我在这里缺少什么。
答案 0 :(得分:1)
打开数据库连接是一种异步操作。连接数据库时调用此ready
事件侦听器,并在进行必要的架构更改后调用。这是数据库实例的第一次异步函数调用。
如果数据库打开失败,则使用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);
});