如何限制来自 Express Router 的返回元素

问题描述

我的 API 中有很多电影,我想返回其中的一部分,我在 MERN 堆栈中工作,但我不知道这样做,我想使用 Express 框架对我的 API 进行分页。 这是我的代码

 const router = require('express').Router()
let Movie = require('../models/movie.model')


router.route('/:limit').get((req,res)=>{

    let limit = parseInt(req.query.limit) || 5

    Movie.find().limit(limit)
        .then(movies=>res.json(movies))
        .catch(err=>res.status(400).json('Error: '+err))
})

例如这是我想要的网址“/movies?limit=20”

解决方法

您可以使用跳过和限制。您的网址将是 /movies?limit=2&skip=2

let limit = parseInt(req.query.limit) || 5
let skip = parseInt(req.query.skip) || 0

Movie.find().skip(skip).limit(limit)

Movie.find(query,fields,{ skip,limit },function(err,results) { ... });