breezejs:使用Skip时FetchFromLocalCache策略存在问题

breezejs:使用Skip时FetchFromLocalCache策略存在问题,breeze,Breeze,考虑以下代码: function search(filter) { var query = breeze.EntityQuery .from("Mandates").skip(offset).take(pageSize).inlineCount(true); if (queryParamCache[cacheObj] > 0) { query = query.using(b

考虑以下代码:

 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用作一个标志,以确定查询结果是否已在缓存中

现在,如果调用此方法并将offset设置为120以跳过前12页(每页10条记录),则会调用服务器并显示结果

然后,我对第13页进行了同样的调用,这很有效,我返回到第12页。这次是从缓存中提取记录,这正是我想要的

但在breezejs代码中,在函数ExecuteQueryLocal中,执行以下代码:

 var skipCount = query.skipCount;
    if (skipCount) {
        result = result.slice(skipCount);
    }
skipCount设置为120,但显然这只是删除了数组中的所有内容,因为我只有20条记录(第12页和第13页)


这不是虫子吗?还是我错过了什么

你没有错过任何东西,这不是一个bug

只是如果breeze正在执行一个本地查询,那么它所要处理的就是本地查询缓存中的数据。在这种限制下,breeze返回的答案正是正确的。基本上,本地查询只是针对本地缓存的查询,因此,如果本地缓存包含40条记录,并且您告诉它跳过120条,然后给您下一个10条,那么将不会返回任何记录


通常,如果要对本地缓存使用带有“skip”的查询,则必须了解这些限制。i、 e.将所有数据放入缓存或删除“跳过”或确保“待跳过”记录已在缓存中

哇,好的。这将需要编写大量的锅炉板代码,不确定是否值得。但我明白问题不在于微风。谢谢