我正在使用 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);
});
}
我的Db架构:
const db = new Dexie('ReactReduxDexieJsCRUD');
db.version(1).stores({table:'++id,name,age,bloodGroup,donateBefore,weight' });
第一次存储日期很好但是在它发出错误之后。
答案 0 :(得分:1)
您的架构如何? (部分db.version(x).stores({...})?
最常见的是拥有入站主键,例如:
db.version(1).stores({
table: 'id, idx1, idx2...'
});
此处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...'
});
然后你不需要在调用add()时提供id:
db.table.add({foo: 'bar'})
将添加ID为1的对象。db.table.add({foo: 'barX'})
第二次将添加id为2的新obj