如何在nodejs + express + mongodb中进行分页

Car*_*los 1 mongodb node.js express

我使用的是nodejs + express + mongodb.我正在研究api.我想在nodejs + express中进行分页.注意:有mongoose-pagination选项,但我没有使用猫鼬.我只使用直接mongodb.

请告诉我如何在nodejs + express中进行分页.我得到了这个链接express-paginate

但我无法解决这个问题.我不知道如何在我的API中实现它.

这是JSON数据.在这个步骤列出超过10的数组,所以我想为此做分页.

这是我的API.这里是循环的步骤,我添加了给定(在上面的github链接中)分页代码

const get = (req, res, next) => {
applogger.verbose(`retrieving asdsa with id ${req.params.asd}`);
asd.findOneById(req.params.asd)
    .then(function(resp) {
        for (var i = 0; i < resp.steps.length; i++) {
            if (resp.asd[i].image == null) {
                resp.asd[i].image = imgurl;
            }

            asd.paginate({}, { page: req.query.page, limit: req.query.limit }, function(err, users) {

                if (err) return next(err);

                res.format({
                    json: function() {
                        res.json('users', {
                            users: users.docs,
                            pageCount: users.pages,
                            itemCount: users.limit,
                            pages: paginate.getArrayPages(req)(3, users.pages, req.query.page)
                        });
                    },
                    json: function() {
                        // inspired by Stripe's API response for list objects
                        res.json({
                            object: 'list',
                            has_more: paginate.hasNextPages(req)(users.pages),
                            data: users.docs
                        });
                    }
                });
            });
        }

        if (resp.asd == null) {
            resp.asd = imgurl;
        }
        res.json(resp);
    }, function(err) {
        res.send(err);
    });
};
Run Code Online (Sandbox Code Playgroud)

Dap*_*que 6

使用你的mongo聚合/查找等...并且只应用skip和limit运算符.

如果你想逐页显示X结果,如果你是页码N(从0开始)

MyCollection.find([
    ...
])
.skip(X * N)
.limit(X)
.exec(function(err, result){
Run Code Online (Sandbox Code Playgroud)

///

 Tourtle.find({})
 .skip(req.skip)
 .limit(req.query.limit)
 .exec(function(err, users) {
    if(err) .... else .....
  });
Run Code Online (Sandbox Code Playgroud)