我不知道这段代码有什么问题:
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
答案 0 :(得分:2)
createIndex
需要在setVersion
交易(2011年12月之前的规格,当前版本的Chrome和IE支持)和最新的onupgradeneeded
回调中进行调用spec(目前仅由FF支持,但IE10及更高版本的Chrome将升级到此版本。)
createIndex
的{{3}}描述列出了您看到错误的原因:
createIndex:此方法创建并返回具有给定的新索引 连接数据库中的名称和参数。如果这个功能是 从外部调用一个VERSION_CHANGE事务回调, 实现必须抛出类型为InvalidStateError的DOMException 异常。
有关setVersion
和onupgradeneeded
之间差异的详细信息,请查看spec,其中说明了代码中的更改。