2014-12-08 44 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); 
}); 
相关问题