2013-06-03 2 views
0

Я получение MandatesHistory коллекции на мандатной Сущности, как это:breezejs: пагинация и отложенная загрузка

var query = breeze.EntityQuery.from("MandatesHistory") 
       .where("Mandate.Id", "==", mandatId) 
       .expand("Mandate").skip(offset).take(pageSize).inlineCount(true); 

      return manager.executeQuery(query.using(service)); 

Он отлично работает в первый раз, и коллекция заполняется 10 записей (это значение PAGESIZE).

Но затем во второй раз в коллекцию добавляются следующие 10 записей вместо замены предыдущих 10. Таким образом, коллекция продолжает расти, когда я просматриваю страницы.

Очевидно, что моя разбивка на страницы больше не работает, поскольку она ожидает только 10 записей на странице, то есть 10 записей в коллекции в любой момент времени.

Ожидаемое поведение? Если я укажу пропуск и сделаю, я предпочел бы, чтобы коллекция была перезаписана после каждого запроса.

ответ

0

Не совсем уверен, что я понимаю вопрос. Я не уверен, в какой «коллекции» вы ссылаетесь, но я думаю, что часть проблемы - это недоразумение в отношении результатов запроса и содержимого кеша EntityManager. Когда вы выполняете запрос с пропуском и взятием, результаты, возвращаемые запросом, обычно в , а затем ... метод, на самом деле будет тем, что вы хотите. т. е. в вашем случае ровно 10 записей. (при условии, что значение страницы равно 10).

var query = breeze.EntityQuery.from("MandatesHistory") 
      .where("Mandate.Id", "==", mandatId) 
      .expand("Mandate").skip(offset).take(pageSize).inlineCount(true); 


manager.executeQuery(query.using(service)).then(data) { 
    var next10items = data.results; // this will always be 10 (or less) records. 
}); 

Кэш-память EntityManager на другой будет расти с каждым «новой» страницы данных, которые он видит. Но в целом вам это не должно волновать. Вы должны просто работать с результатами запроса каждый раз.

Имеет ли это смысл?

+0

Проблема в том, что я привязался к моему представлению (используя angularjs) свойство коллекции моего объекта, через которое я петлю, чтобы отображать записи в разбитой на страницы таблицы. Тем не менее, я хочу отобразить только десять записей, возвращаемых запросом, в зависимости от того, на какой странице я нахожусь. Возможно, мне нужно привязать результаты напрямую, а не к объекту. Таким образом, я бы избегал проблемы с кешем, но мне это кажется неудобным. Яснее? – Sam

+0

Извините, не совсем :) Если вы создали коллекцию и хотите привязать ее к 10 записям, то просто очистите коллекцию, прежде чем заполнять ее результатами вашего запроса. Кажется, я что-то упускаю. –

+0

То, как я заполняю коллекцию, не позволяет мне прояснить заранее. Я использую Expand, и я позволяю breeze объединять коллекцию с существующим сущностью (в кеше) – Sam

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