考虑以下代码:
function search(filter) {
var query = breeze.EntityQuery
.from("Mandates").skip(offset).take(pageSize).inlineCount(true);
if (queryParamCache[cacheObj] > 0) {
query = query.using(breeze.FetchStrategy.FromLocalCache);
} else {
query = query.using(breeze.FetchStrategy.FromServer);
}
return manager.executeQuery(query.using(service)).then(function (result) {
return result;
});
}
queryParamCache 用作标志来确定查询结果是否已经在缓存中。
现在,如果我调用此方法并将偏移量设置为 120 以跳过前 12 页(每页 10 条记录),则会调用服务器并显示结果。
然后,我对第 13 页进行了相同的调用,这有效,然后我返回到第 12 页。这次从缓存中获取记录,这正是我想要的。
但是在briefjs代码中,在函数executeQueryLocally中,执行了如下代码:
var skipCount = query.skipCount;
if (skipCount) {
result = result.slice(skipCount);
}
skipCount 设置为 120,但显然这只会删除数组中的所有内容,因为我只有 20 条记录(第 12 页和第 13 页)。
这不是错误吗?还是我错过了什么?