如何检查ydn.db数据库是否可以使用?

时间:2014-12-08 07:48:42

标签: javascript html5 indexeddb ydn-db

我可以成功创建一个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() {

我不确定我在这里缺少什么。

1 个答案:

答案 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);
});