gpt4 book ai didi

indexeddb - indexedDB 中不区分大小写的搜索

转载 作者:行者123 更新时间:2023-12-04 22:34:44 27 4
gpt4 key购买 nike

有人可以告诉我是否可以使用 index、openCursor 和 keyRange 在 indexeddb 对象存储上执行不区分大小写的搜索....
我可以区分大小写并设法使用 toUpperCase 函数来实现一些东西,但是有很多不同的变体,它不可行依赖...
欢迎任何帮助......谢谢......
尝试示例:

var transaction = db.transaction("products", IDBTransaction.READ_ONLY);
var store = transaction.objectStore("products");
var descIndex = store.index('Index1');
var boundKeyRangeUpper = IDBKeyRange.bound(request.term.toUpperCase(), (request.term.toUpperCase()+'Z'));
descIndex.openCursor(boundKeyRangeUpper).onsuccess = function (e)

更新
这就是我最终实现的:
涵盖和可能性的四个范围,即 FA,fA,Fa,fa... 这仅在第一个字母上完成,即“F”
var boundKeyRangeUpper = IDBKeyRange.bound(term.toUpperCase(), term.toUpperCase()+'Z');
var boundKeyRangeUpper2 = IDBKeyRange.bound(term.toUpperCase(), term.toUpperCase()+'z');
var boundKeyRangeLower = IDBKeyRange.bound(term.toLowerCase(), term.toLowerCase()+'z');
var boundKeyRangeLower2 = IDBKeyRange.bound(term.toLowerCase(), term.toLowerCase()+'Z');

上面搜索的结果存储在另一个 objectStore 中,但它们的描述为大写,因此 FISH、FRUIT、FRESH SALAD... 现在如果在 F 之后按下一个字母,例如'r' 搜索将查看这个新的对象存储,其中所有内容都是大写的......到目前为止,这不是一个理想的解决方案,但它有效并且很快满足我的需求......也许我们最终会得到不区分大小写的搜索不是...

最佳答案

我建议修改对象存储的结构,这是通过添加一个列(即存储中每个对象的属性),其键的值相同但为大写,然后将此新属性设为键。

//object
var lang = {
name: 'Javascript',
keyName: '', //THE NEW PROPERTY - KEY OF THE OBJECTSTORE
interest: 100
};

当您将对象添加到商店时,使用名称(或术语或其他)的大写修改新属性,因此该对象将是:
//object
var lang = {
name: 'Javascript',
keyName: 'JAVASCRIPT', // NEW PROPERTY MODIFIED TO UPPERCASE OF OLD KEY
interest: 100
};

然后继续你的代码。

关于indexeddb - indexedDB 中不区分大小写的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9706907/

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