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));