如何检查 IndexedDB 中是否存在存储键?
How do I check if a store key exists in IndexedDB?
我想检查并更新 indexeddb 存储中的项目数量(如果它已经存在)。这就是我目前使用 Dexie
将商品添加到商店的方式
async function addNfetch (itemdata) {
return new Promise((resolve, reject) => {
db.table('cartitems')
.add(itemdata)
.then(() =>{
db.table("cartitems").toArray().then((itemArry) => {
console.log("item array ", itemArry)
resolve(itemArry)
})
})
.catch(error => {
console.log(error);
});
})
}
以上函数仅在对象键已经存在的情况下添加并抛出错误
DexieError {_e: Error
at getErrorWithStack (http://localhost:3000/static/js/0.chunk.js:14551:10)
at new Dex…, name: "ConstraintError", message: "Key already exists in the object store.↵ ConstraintError: Key already exists in the object store.", inner: DOMException: Key already exists in the object store., _promise: DexiePromise,
检查密钥是否存在我只能想到使用 error.message。
if (error.message == "Key already exists in the object store"){
// then object exist
}
有没有更好的方法来检查存储密钥是否已经存在,以便我可以更新而不是覆盖它。
function addNfetch (itemdata) {
return db.table('cartitems').put(itemdata);
}
put() 与 add() 类似,但如果条目已存在则更新条目。
此外,请注意:您不需要创建新的 Promise() 来调用基于 API:s 的承诺。这个例子不需要是异步的,因为它只调用一个 API 方法。它同样可以是:
async function addNfetch (itemdata) {
return await db.table('cartitems').put(itemdata);
}
但如您所见,在此示例中它并没有真正简化任何内容。
我想检查并更新 indexeddb 存储中的项目数量(如果它已经存在)。这就是我目前使用 Dexie
将商品添加到商店的方式 async function addNfetch (itemdata) {
return new Promise((resolve, reject) => {
db.table('cartitems')
.add(itemdata)
.then(() =>{
db.table("cartitems").toArray().then((itemArry) => {
console.log("item array ", itemArry)
resolve(itemArry)
})
})
.catch(error => {
console.log(error);
});
})
}
以上函数仅在对象键已经存在的情况下添加并抛出错误
DexieError {_e: Error at getErrorWithStack (http://localhost:3000/static/js/0.chunk.js:14551:10) at new Dex…, name: "ConstraintError", message: "Key already exists in the object store.↵ ConstraintError: Key already exists in the object store.", inner: DOMException: Key already exists in the object store., _promise: DexiePromise,
检查密钥是否存在我只能想到使用 error.message。
if (error.message == "Key already exists in the object store"){
// then object exist
}
有没有更好的方法来检查存储密钥是否已经存在,以便我可以更新而不是覆盖它。
function addNfetch (itemdata) {
return db.table('cartitems').put(itemdata);
}
put() 与 add() 类似,但如果条目已存在则更新条目。
此外,请注意:您不需要创建新的 Promise() 来调用基于 API:s 的承诺。这个例子不需要是异步的,因为它只调用一个 API 方法。它同样可以是:
async function addNfetch (itemdata) {
return await db.table('cartitems').put(itemdata);
}
但如您所见,在此示例中它并没有真正简化任何内容。