2015-02-11 2 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

Смежные вопросы