Step 1: Dependencies

Install dependencies.

npm i express mongoose mongoose-paginate-v2 --save
npm i nodemon --save-dev

Step 2: Tutorial Schema

Create file - ./models/Tutorial.js & copy-paste contents as follows.

const mongoose = require("mongoose");
const mongoosePaginate = require("mongoose-paginate-v2"); // 1. import
const schema = new mongoose.Schema({
    title: { type: String, index: true, required: true },
    description: { type: String, index: true },
    published: { type: Boolean, required: true },
    createdAt: { type: Date, default: Date.now },
    updatedAt: { type: Date, default: Date.now }
});
schema.plugin(mongoosePaginate); // 2. Added plugin
const Tutorial = mongoose.model("Tutorial", schema);
module.exports = Tutorial;

Step 3: Mongo Connection

Create file - ./config/keys.js

module.exports = {
    MongoURI: 'mongodb://localhost/tutorial?retryWrites=true&w=majority'
};

Step 4: Tutorial Route with Pagination

  • e.g. Routes are localhost:5000/tutorial
  • Create file ./routes/tutorial.js
const { query } = require('express');
const express = require('express');
const router = express.Router();
const mongoosePaginate = require("mongoose-paginate-v2");
const Tutorial = require('../models/tutorial');
router.get('/', (req, res) => {
    const start = parseInt(req.query.start) || 0;
    const pageSize = parseInt(req.query.pageSize) || 10;
    let query = {};
    if (req.query.q != null) {
        query.title = new RegExp(req.query.q, 'i');
        query.description = new RegExp(req.query.q, 'i');
    }
    Tutorial
        .paginate(query, { offset: start, limit: pageSize, sort: 'title' })
        .then(tutorials => {
            res.json(tutorials);
        });
});
module.exports = router;

Step 5: App.js

const express = require('express');
const bodyParser = require('body-parser');

const mongoose = require('mongoose');
const db = require('./config/keys').MongoURI;

mongoose
    .connect(db, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true })
    .then(() => {
        console.log(`MongoDB Connected`);

        // Body Parser
        const app = express();
        app.use(express.urlencoded({ extended: false }));
        app.use(bodyParser.json());

        // routes
        app.use('/tutorial', require('./routes/tutorial'));

        // SERVER
        const PORT = process.env.PORT || 5000;
        app.listen(PORT, () => {
            console.log(`Listening at port::${PORT}`);
        });

    }).catch(error => console.log(error));