2015-02-11 25 views
1

即使指定了FetchStrategy.FromLocalCache,我也会遇到问题,即微风总是会到服务器。我在下面创建了一个测试脚本。如预期的那样,初始查询变得偏远。第二个查询也是远程的(FetchStrategy.FromLocalCache)。第三个查询(ExecuteQueryLocally)转到本地缓存。从开发人员工具中,我可以看到有2个网络请求(不包括元数据)。我究竟做错了什么?Breeze Fetch策略总是偏远

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; 
     } 
    }, 

回答

0

而不是

query.using(breeze.FetchStrategy.FromLocalCache); 

你需要将其重新分配,即

query = query.using(breeze.FetchStrategy.FromLocalCache); 

微风所有EntityQueries是不可变的,这意味着任何时候你申请更改的EntityQuery你会得到一个新的。这是设计的,所以以后的修改不会改变您的查询。

或者你可以简单地使用

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

是的,这工作!谢谢 – user1068557 2015-02-11 22:02:00