javascript - indexeddb从索引n到索引k获取数据

标签 javascript indexeddb

如何从索引号n到k的对象存储中获取数据。 例如,如果我们在商店(ProductStore)中有 100 条记录,我需要从索引 11 到 20 或 50 到 60 获取。我需要在分页中使用它。在mysql中我们可以使用LIMIT和OFFSET语句,Indexeddb中有没有相当于OFFSET的东西。

最佳答案

您可以使用cursor.advance跳过一些记录。游标没有限制,您只需通过计算迭代次数来停止迭代即可。

类似这样的事情:

function query(db, criteria, offset, limit) {
  return new Promise((resolve, reject) => {
    const results = [];
    const transaction = db.transaction('store');
    transaction.oncomplete = event => resolve(results);
    transaction.onerror = event => reject(event.target);
    const store = transaction.objectStore('store');
    const index = store.index('index');
    const request = index.openCursor(criteria);

    let advanced = offset === 0;
    let counter = 0;
    
    request.onsuccess = event => {
      const cursor = event.target.result;
      if (!cursor) {
        return;
      }

      if (!advanced) {
        advanced = true;
        cursor.advance(offset);
      }

      counter++;
      results.push(cursor.value);

      if (counter >= limit) {
        return;
      }
      cursor.continue();
    };
  });
}

关于javascript - indexeddb从索引n到索引k获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64209478/

相关文章:

javascript - jQuery - 当有多个时从选择中获取值

javascript - 在 winston v3 中 T there <A>($winston Logger Config<T>) => $winston Logger<T> 是什么意思?

ios - 在 iOS PWA 和 safari 之间共享 IndexedDB

javascript - 使用 Jest 和 enzyme 进行 IndexedDB 测试 - ReferenceError : indexedDB is not defined

javascript - 如何模拟不良滚动

javascript - 在 jscript 中更改警报名称

javascript - 如何隐藏 jQuery 中仅包含隐藏 DIV 的元素?

Html5 IndexedDB - 通过其键检索值

javascript - 如何检查 id IndexedDB 是否已存在于 React 生命周期方法中

android - Android 上的 Chrome 浏览器 : Granted Quota for IndexedDB suddenly almost 0