Indexeddb获取所有不同于某个值的记录

50few1ms  于 2023-04-10  发布在  IndexedDB
关注(0)|答案(1)|浏览(308)

是否有一个内置的方式来获得所有的记录,这是不同于某些值在indexed-db。
在SQL中,这类似于
SELECT * FROM table WHERE field1 <> 'somedata';
我看到了一个内置的IDBKeyRange.only()方法,但是我没有看到返回差异的方法。(或者我没有看到简单的方法)
是的,我知道如果我们迭代记录,我们可以做到这一点。我说的是快速构建的方式来执行这一点。
不幸的是,方法
IDBKeyRange.bound(value, value, true, true)
返回错误,但这正是所需要的

7y4bm7vi

7y4bm7vi1#

IDBKeyRange.bound(value, value, true, true)是一个错误,因为它是一个不可能的区间--没有键同时高于value和低于value。
但是你可以使用 * 两个 * 范围:
IDBKeyRange.upperBound(value, true)提供从store/index的开始到value(但不包括value)的所有记录。IDBKeyRange.lowerBound(value, true)提供从value(但不包括value)到store/index的结束的所有记录。
如果您知道记录的数量相对较少,则可以将其与getAll()方法一起使用,否则迭代是最好的方法。
(We我已经讨论过添加更复杂的查询,这样你就可以做一个“范围集”,而不是必须查询两个范围,但这还没有在任何实现中体现出来。

相关问题