Caching Breeze获取策略总是远程的

Caching Breeze获取策略总是远程的,caching,breeze,local,Caching,Breeze,Local,我遇到一个问题,即使我指定了FetchStrategy.FromLocalCache,breeze仍会转到服务器。我在下面创建了一个测试脚本。初始查询按预期远程进行。第二个查询也是远程查询(FetchStrategy.fromlocache)。第三个查询(ExecuteQueryLocal)转到本地缓存。从开发人员工具中,我可以看到有2个网络请求(不包括元数据)。我做错了什么 getCategories = function (observable) { var query

我遇到一个问题,即使我指定了FetchStrategy.FromLocalCache,breeze仍会转到服务器。我在下面创建了一个测试脚本。初始查询按预期远程进行。第二个查询也是远程查询(FetchStrategy.fromlocache)。第三个查询(ExecuteQueryLocal)转到本地缓存。从开发人员工具中,我可以看到有2个网络请求(不包括元数据)。我做错了什么

   getCategories = function (observable) {
       var query = breeze.EntityQuery
            .from("Categories")
            .orderBy('Order');
       manager.executeQuery(query) //goes remote
           .then(fetchSucceeded)
           .fail(queryFailed);

       function fetchSucceeded(data) {
       //    observable(data.results);
           getCategoriesLocal(observable); 
       }
   },

   getCategoriesLocal = function (observable) {
       var query = breeze.EntityQuery
            .from("Categories")
            .orderBy('Order');
       query.using(breeze.FetchStrategy.FromLocalCache);
       manager.executeQuery(query)   //also goes remote
           .then(fetchSucceeded)
           .fail(queryFailed);

       function fetchSucceeded(data) {
           d = manager.executeQueryLocally(query); //goes local
           observable(d);
           return;
       }
   },
而不是

query.using(breeze.FetchStrategy.FromLocalCache);
您需要重新分配它,即

query = query.using(breeze.FetchStrategy.FromLocalCache);
在breeze中,所有EntityQueries都是不可变的,这意味着每当您对EntityQuery应用更改时,都会得到新的更改。这是经过设计的,因此以后的修改不会改变您的查询

或者,您可以简单地使用

  manager.executeQuery(query.using(breeze.FetchStrategy.FromLocalCache));