2

我不知道这段代码有什么问题:

onupgradeneeded = function(){
  z = e.currentTarget.result.createObjectStore(
                       'record', 
                       {keyPath:'id',autoIncrement:true}
  );
  z.createIndex('book', 'book', {unique:false});
  z.createIndex('user', 'user', {unique:false});
}

当我尝试使用以下代码将数据放入对象存储时:

db.transaction('record',IDBTransaction.READ_WRITE)
    .objectStore('record')
    .add({book:...,user:...})

我收到以下错误消息:

Data provided to an operation does not meet requirements
4

1 回答 1

2

createIndex需要从setVersion事务中调用(2011 年 12 月之前的规范,当前版本的 Chrome 和 IE 支持)和onupgradeneeded最新规范中的回调(当前仅 FF 支持,但 IE10 和更高版本的 Chrome 将升级到这)。

规范描述说明createIndex了您看到错误的原因:

createIndex:此方法在连接的数据库中创建并返回具有给定名称和参数的新索引。如果从 VERSION_CHANGE 事务回调外部调用此函数,则实现必须抛出 InvalidStateError 异常类型的 DOMException。

setVersion有关和之间区别的更多信息onupgradeneeded,请查看IE 人的这篇文章,其中解释了代码中的更改。

于 2012-03-28T14:51:43.443 回答