2

我的对象结构是这样的:

var test={
        "id":"A",
        "ChanName":"Discovery",
        "LCN":10
        };

这是创建对象存储的片段:

var objectStore = db.createObjectStore('Dat', { keyPath:'test.id',autoIncrement: false});

var trans = db.transaction(["Dat"], webkitIDBTransaction.READ_WRITE);
         var store = trans.objectStore("Dat");
         var request=store.put(test);

当我尝试添加测试对象时,我得到了这个异常 DATA_ERR: DOM IDBDatabase Exception 5。请问你能告诉我这里有什么问题吗?我正在使用 chrome 18 进行测试。对象存储的创建很好,但无法添加数据

4

1 回答 1

3

当“提供给操作的数据不符合要求”时,会引发 IndexedDB 异常 5。这通常是因为您添加了一个索引,例如,同时提供了一个缺少该属性的对象。

在这里,您的test对象似乎与您指定的键路径不匹配。

如果您想id作为密钥createObjectStore,则必须是这样的:

var objectStore = db.createObjectStore('Dat', { keyPath:'id',autoIncrement: false});

作为另一个示例,或者,使用您的 keyPath 对象,您的test对象需要看起来像这样才能不引发此错误:

var test={
 test: { "id":"A" },
 ChanName:"Discovery",
 LCN:10
};
于 2012-05-09T17:00:10.617 回答