Javascript 如果存在唯一密钥,则更新Dexie条目

Javascript 如果存在唯一密钥,则更新Dexie条目,javascript,indexing,indexeddb,dexie,Javascript,Indexing,Indexeddb,Dexie,我设置了一个具有唯一键的表,如: let db=new-Dexie(“myDB”); db.version(1).stores({ myTable:“++id和标签” }); db.put({标签:“A”,名称:“Bob”})不,在indexedDB中没有类似的功能,因此我假设在dexie中也没有任何功能,它基本上只是一个包装器库 每次尝试存储对象时,indexedDB都会失败并出现约束错误 您需要使用openCursor或get或openKeyCursor查找记录是否存在,然后决定是否使用p

我设置了一个具有唯一键的表,如:

let db=new-Dexie(“myDB”);
db.version(1).stores({
myTable:“++id和标签”
});

db.put({标签:“A”,名称:“Bob”})不,在indexedDB中没有类似的功能,因此我假设在dexie中也没有任何功能,它基本上只是一个包装器库

每次尝试存储对象时,indexedDB都会失败并出现约束错误

您需要使用
openCursor
get
openKeyCursor
查找记录是否存在,然后决定是否使用
put
。这将始终涉及两个请求,即使您使用
openCursor
cursor.update
,因为
cursor.update
只是
put
的语法糖


或者,我想你可以改变你的观点,说各种看跌期权可能会失败。或者重新构造对象存储和约束。这种特殊类型的问题肯定是决定如何存储对象的标准。

.put()
返回一个承诺,您能捕获错误并在那里进行更新吗?@Herohtar我可以捕获错误,但它不会告诉我保存重复项的行的主键。好的,然后,我们将删除所述表的自动增量索引,但这似乎是indexeddb的一个基本缺点。如果上述web应用程序的一半用户不使用Firefox,我可能只会使用WebSQL:/