gpt4 book ai didi

javascript - 如何检查是否在 IndexedDB 中找不到键?

转载 作者:数据小太阳 更新时间:2023-10-29 06:15:22 25 4
gpt4 key购买 nike

在 indexeddb 上,我想查看是否有一个键 permanent 并执行一些操作。但如果没有,我想做一些其他的 Action 。如果 permanent 存在,我可以执行这些操作,但是当它不存在时,我可以让 onerror 工作。 onerror 应该做这件事吗?如何检查它是否没有值(value)?

var hashtype='permanent';
var getPermanent = store.get(hashtype);

getPermanent.onsuccess = function() {
var ivrame=getPermanent.result.value;
};

getPermanent.onerror = function() {
console.log('onerror')
};

最佳答案

请参阅 https://w3c.github.io/IndexedDB/#dom-idbobjectstore-get 下的注释- 如果没有匹配的记录,get 方法会返回 undefined 成功。

所以你有几个选择:

  • 使用get(key) 并测试undefined 的结果。这有效,除非 undefined 是您希望存储的值(这是一个有效值)
  • 使用 count(key) - 如果存在则结果为 1,如果不存在则为 0。如果您只是测试是否存在,但不会让您获得记录,这很简单。
  • 使用openCursor(key) 并测试请求的result 是否是游标(记录显示为request.result.value)或 undefined(范围内没有记录)

对于您的代码:

var hashtype='permanent';

// #1: Use get
var getPermanent = store.get(hashtype);
getPermanent.onsuccess = function() {
if (getPermanent.result === undefined) {
// no record with that key
} else {
var value = getPermanent.result;
}
};

// #2: Use count
var getPermanent = store.count(hashtype);
getPermanent.onsuccess = function() {
if (getPermanent.result === 0) {
// no record with that key
} else {
...
}
};

// #3: Use cursor
var getPermanent = store.openCursor(hashtype);
getPermanent.onsuccess = function() {
var cursor = getPermanent.result;
if (!cursor) {
// no record with that key
} else {
var value = cursor.value;
}
};

关于javascript - 如何检查是否在 IndexedDB 中找不到键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com