在定义偏移量和限制时在 Dexie returns 中查询无

Querying in Dexie returns nothing when offset and limit are defined

Dexie 菜鸟在这里。我正在尝试使用 Dexie.js 从 IndexedDB 中获取一些数据。我想批量获取数据(想想分页),似乎只有第一个查询有效。

这是数据:

db.friends.bulkAdd([
  {name: "David", age: 42},
  {name: "Neil", age: 37},
  {name: "Freddie", age: 36},
  {name: "Elvis", age: 56},
  {name: "Calvin", age: 22},
]);

这是查询 #1:

db.friends
.orderBy('age')
.limit(2)
.offset(0)
.toArray()
.then(function(result) {
  // Works as expected!
});

然后查询 #2 returns 一个空 []:

db.friends
.orderBy('age')
.limit(2)
.offset(2)
.toArray()
.then(function(result) {
  // result is []
}); 

如果我将 limit(2) 排除在查询 #2 之外,查询将按预期工作,但 offset()limit() 一起似乎不起作用。

我在这里做错了什么?我可能只是遗漏了一些关于 Dexie 或 IndexedDB 工作原理的非常基本的东西,但有人能帮我吗?

a JSFiddle 对此进行测试。

感谢 jsfiddle。我同意我一开始读它时觉得很奇怪。然后我意识到原因是offset()和limit()的顺序。在您的示例中,您在 offset() 之前使用了 limit(),这基本上意味着:

  1. 将结果限制为仅 2 项。
  2. 从 2 项的集合中,将偏移量设置为 2,这会导致结果为零。

因此解决方案是调换限制和偏移量的顺序 - 先使用偏移量,然后对该集合应用限制。