ConstraintError: Key already exists in the object store
ConstraintError: Key already exists in the object store
我正在使用 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);
});
}
我的数据库架构:
const db = new Dexie('ReactReduxDexieJsCRUD');
db.version(1).stores({table:'++id,name,age,bloodGroup,donateBefore,weight' });
第一次保存日期很好,之后就报错了。
您的架构是什么样的? (部分 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 的对象。
那你到底想做什么?你说你想用新键添加新对象。如果是这样,我想错误是你第二次给了同样的钥匙。
你也可以让id由db生成
db.version(2).stores({
table: '++id, idx1, idx2...'
});
那么你不需要在调用 add() 时提供 id:
db.table.add({foo: 'bar'})
将添加 ID 为 1 的对象。
db.table.add({foo: 'barX'})
第二次将添加 ID 为 2 的新对象
- ...
我正在使用 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);
});
}
我的数据库架构:
const db = new Dexie('ReactReduxDexieJsCRUD');
db.version(1).stores({table:'++id,name,age,bloodGroup,donateBefore,weight' });
第一次保存日期很好,之后就报错了。
您的架构是什么样的? (部分 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 的对象。
那你到底想做什么?你说你想用新键添加新对象。如果是这样,我想错误是你第二次给了同样的钥匙。
你也可以让id由db生成
db.version(2).stores({
table: '++id, idx1, idx2...'
});
那么你不需要在调用 add() 时提供 id:
db.table.add({foo: 'bar'})
将添加 ID 为 1 的对象。db.table.add({foo: 'barX'})
第二次将添加 ID 为 2 的新对象- ...