Skip to main content

Command Palette

Search for a command to run...

Node.js Boilerplate (using Express.js & MongoDB)

Published
1 min read

Requirements: Node.js 8+ MongoDB 3.6+ (Recommended 4+)

Install project: git clone https://github.com/maitraysuthar/rest-api-nodejs-mongodb.git ./myproject cd myproject npm install cp .env.example .env

Create necessary collections in MongoDB

Run locally: npm run dev

Use Mongoose ODM as a replacement for Laravel's Eloquent. ORM is for MySQL databases, while ODM does the mapping for document representation of data.

Search requested id inside collection by ObjectId

//inside index.js
const mongoose = module.exports = exports = new Mongoose({
  [defaultMongooseSymbol]: true
});
//inside controller.js
mongoose.Types.ObjectId.isValid(req.params.id)

Login - JWT token generation

const jwt = require("jsonwebtoken");

let userData = {
    _id: user._id,
    firstName: user.firstName,
    lastName: user.lastName,
    email: user.email,
};
//Prepare JWT token for authentication
const jwtPayload = userData;
const jwtData = {
    expiresIn: process.env.JWT_TIMEOUT_DURATION,
};
const secret = process.env.JWT_SECRET;

//Generated JWT token with Payload and secret.
userData.token = jwt.sign(jwtPayload, secret, jwtData);

return apiResponse.successResponseWithData(res,"Login Success.", userData);

check token in controller function

//inside middleware file
const expressJwt = require("express-jwt");
const secret = process.env.JWT_SECRET;
const authenticate = expressJwt({
    secret: secret
});
module.exports = authenticate;

//inside controller
const auth = require("../middlewares/jwt");

exports.bookList = [
    auth,
    function (req, res) {
        ...
    }
];