У меня есть приложение Meteor-реагировать, которое содержит коллекцию, с большим количеством данных.Я отображаю данные с нумерацией страниц .На стороне сервера я просто публикую данные для текущей страницы.
Итак, я публикую некоторые данные на стороне сервера:
Meteor.publish('animals', function(currPage,displayPerPage, options) {
const userId = this.userId;
if (userId) {
const currentUser = Meteor.users.findOne({ _id: userId });
let skip = (currPage - 1) * displayPerPage;
if (displayPerPage > 0) {
Counts.publish(this, 'count-animals', Animals.find(
{$and: [
// Counter Query
}
), {fastCount: true});
return Animals.find(
{$and: [
// Data query
]}, {sort: options.sortOption, skip: skip, limit: displayPerPage });
} else {
Counts.publish(this, 'count-animals', 0);
return [];
}
}
});
А на стороне клиента я использую трекер:
export default AnimalsContainer = withTracker(({subscriptionName, subscriptionFun, options, counterName}) => {
let displayPerPage = Session.get("displayPerPage");
let currPage = Session.get("currPage");
let paginationSub = Meteor.subscribe(subscriptionName, currPage, displayPerPage, options );
let countAnimals = Counts.get(counterName);
let data = Animals.find({}).fetch({});
// console.log(data);
return {
// data: data,
data: data.length <= displayPerPage ? data : data.slice(0, displayPerPage),
countAnimals: countAnimals,
}
})(Animals);
Проблема заключается в:
Когда я пытаюсь изменить параметры сортировки на стороне клиента, сервер сортирует не по первым данным (Skippind первые по некоторым).Иногда с 20-го, иногда с 10-го.Проверка типов выполняется с обеих сторон.