sorting must be done before limit!

This commit is contained in:
herteby 2017-06-26 15:57:54 +02:00
parent 55f593719f
commit 2b17c352ce
2 changed files with 7 additions and 6 deletions

View file

@ -4,7 +4,7 @@ import ReducerNode from '../nodes/reducerNode.js';
import dotize from './dotize.js';
import createReducers from '../reducers/lib/createReducers';
const specialFields = ['$filters', '$options', '$postFilters','$postOptions','$postFilter']; //keep $postFilter for legacy support
const specialFields = ['$filters', '$options', '$postFilters', '$postOptions', '$postFilter']; //keep $postFilter for legacy support
/**
* Creates node objects from the body

View file

@ -39,14 +39,15 @@ export function applyPostFilters(node) {
export function applyPostOptions(node) {
const options = node.props.$postOptions;
if (options) {
if(options.limit || options.skip){
const start = options.skip || 0, end = options.limit ? options.limit + start : -0;
node.results = node.results.slice(start, end);
}
if(options.sort){
if (options.sort) {
const sorter = new Minimongo.Sorter(options.sort);
node.results.sort(sorter.getComparator());
}
if (options.limit || options.skip) {
const start = options.skip || 0;
const end = options.limit ? options.limit + start : node.results.length;
node.results = node.results.slice(start, end);
}
}
node.collectionNodes.forEach(collectionNode => {