Как разбить на страницы с помощью Mongoose в Node.js? - PullRequest
194 голосов
/ 04 апреля 2011

Я пишу веб-приложение с Node.js и mongoose.Как я могу разбить на страницы результаты, которые я получаю от звонка .find()?Я хотел бы функциональность, сравнимую с "LIMIT 50,100" в SQL.

Ответы [ 23 ]

0 голосов
/ 06 июня 2015

Вы можете написать запрос следующим образом.

mySchema.find().skip((page-1)*per_page).limit(per_page).exec(function(err, articles) {
        if (err) {
            return res.status(400).send({
                message: err
            });
        } else {
            res.json(articles);
        }
    });

page: номер страницы, поступающий от клиента в качестве параметров запроса.per_page: нет результатов, отображаемых на странице

Если вы используете стек MEAN, следующий пост в блоге предоставляет большую часть информации для создания нумерации страниц во внешнем интерфейсе с использованием начальной загрузки углового пользовательского интерфейса и использования мангового пропуска и ограничения в серверной части.

см .: https://techpituwa.wordpress.com/2015/06/06/mean-js-pagination-with-angular-ui-bootstrap/

0 голосов
/ 05 декабря 2015

Вы можете использовать skip () и limit (), но это очень неэффективно. Лучшим решением была бы сортировка по индексируемому полю плюс limit (). Мы в Wunderflats опубликовали небольшую библиотеку здесь: https://github.com/wunderflats/goosepage Используется первый способ.

0 голосов
/ 08 марта 2016

Если вы используете мангуст в качестве источника для успокоительного API, посмотрите на ' restify-mongoose ' и его запросы. В него встроен именно этот функционал.

Любой запрос к коллекции предоставляет полезные заголовки здесь

test-01:~$ curl -s -D - localhost:3330/data?sort=-created -o /dev/null
HTTP/1.1 200 OK
link: </data?sort=-created&p=0>; rel="first", </data?sort=-created&p=1>; rel="next", </data?sort=-created&p=134715>; rel="last"
.....
Response-Time: 37

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

...