Node.js Boilerplate (using Express.js & MongoDB)
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) {
...
}
];