我正在使用带有下限范围查询的游标。我找不到限制返回对象数量的方法,类似于数据库中的“LIMIT n”子句。
var keyRange = IDBKeyRange.lowerBound('');
它不存在吗?
我正在使用带有下限范围查询的游标。我找不到限制返回对象数量的方法,类似于数据库中的“LIMIT n”子句。
var keyRange = IDBKeyRange.lowerBound('');
它不存在吗?
当您遍历结果时,您可以随时停止。像这样的东西应该工作:
var results = [];
var limit = 20;
var i = 0;
objectStore.openCursor().onsuccess = function (event) {
var cursor = event.target.result;
if (cursor && i < limit) {
results.push(cursor.value);
i += 1;
cursor.continue();
}
else {
// Do something with results, which has at most 20 entries
console.log(results);
}
};
此外,在您根据由序列号组成的键进行选择的特殊情况下,您可以使用 keyRange 显式地仅返回某个范围。但一般情况并非如此。
一个重要的修复它的替换:
if (cursor && i < limit) {
为了
if (cursor && results.length < limit) {
请记住,它是一个异步调用,它可能同时在“结果”上添加元素,而“i”将没有正确的值。
您甚至可以使用IDBKeyRange.bound
功能在 indexedDB 中按范围搜索
IDBKeyRange.bound(keyValueFrom, keyValueTo, false, true);
您可以设置开始值、结束值以及是否应在返回的项目中包含开始值和结束值。在我的情况下,我想要范围的第一个值,但是我想排除最后一个值。
有关 IDBKeyRange 的详细信息,请访问W3C IndexedDB 页面