当定义偏移和限制时,在Dexie中查询不返回任何内容

时间:2017-08-01 18:46:18

标签: javascript indexeddb dexie

Dexie noob在这里。我正在尝试使用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返回空[]

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

如果我从查询#2中退出limit(2),则查询会按预期工作,但offset()limit()似乎无法正常工作。

我在这里做错了什么?我可能只是遗漏了Dexie或IndexedDB如何工作的基本内容,但任何人都可以帮助我吗?

这是a JSFiddle来测试这个。

1 个答案:

答案 0 :(得分:0)

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

  1. 仅将结果限制为2个项目。
  2. 从2个项目的集合中,将偏移设置为2,结果为零。
  3. 因此,解决方案是切换限制和偏移的顺序 - 首先使用偏移,然后对该集合应用限制。