MD *_*hik 7 javascript indexeddb dexie redux
我正在使用React 16.3.2、Redux 4和Dexie 2.0.3。
当我第二次存储数据时,它会抛出此错误消息。
错误: ConstraintError: Key already exists in the object store.
return dispatch => {
db.table
.add(data)
.then (function(id){
console.log(id)
})
.catch (function (error) {
console.log("Error: " + error);
});
}
Run Code Online (Sandbox Code Playgroud)
我的数据库架构:
const db = new Dexie('ReactReduxDexieJsCRUD');
db.version(1).stores({table:'++id,name,age,bloodGroup,donateBefore,weight' });
Run Code Online (Sandbox Code Playgroud)
第一次它可以很好地存储日期,但之后会出现错误。
您的架构是什么样的?(db.version(x).stores({...}) 部分?
最常见的是具有入站主键,例如:
db.version(1).stores({
table: 'id, idx1, idx2...'
});
Run Code Online (Sandbox Code Playgroud)
这id是主键。
db.table.add({id: 1, foo: 'bar'})将添加 id 为 1 的对象。db.table.add({id: 1, foo: 'bar2'})第二次会失败,因为 id 1 存在。db.table.put({id: 1, foo: 'bar2'})将更新 id 为 1 的对象。那么你真正想做什么?您说您想使用新密钥添加新对象。如果是这样,我想错误是您第二次给出了相同的密钥。
您还可以让 db 生成 id
db.version(2).stores({
table: '++id, idx1, idx2...'
});
Run Code Online (Sandbox Code Playgroud)
那么你不需要在调用 add() 时提供 id:
db.table.add({foo: 'bar'})将添加 id 为 1 的对象。db.table.add({foo: 'barX'})第二次将添加 id 为 2 的新对象| 归档时间: |
|
| 查看次数: |
8092 次 |
| 最近记录: |