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来测试这个。
答案 0 :(得分:0)
感谢jsfiddle。我可以同意,当我读到它时,我发现它很奇怪。然后我意识到原因是offset()和limit()的顺序。在您的示例中,您在offset()之前使用limit(),这基本上意味着:
因此,解决方案是切换限制和偏移的顺序 - 首先使用偏移,然后对该集合应用限制。