1

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

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

4

1 回答 1

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);
});
于 2014-12-08T07:53:30.663 回答