Nodejs Backend
2 min readMay 25, 2022
Creating a server
const express = require('express');const app = express();app.use((req, res, next) => {
console.log('Time: ', Date.now());
next();
});app.get('/', (req, res) => {
res.send('Successful response.');
});app.listen(3000, () => console.log('Example app is listening on port 3000.'));
5 Steps
#1 : Using mongodb
mongoose = require('mongoose');if(isProduction){
mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true });
} else {
mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true });
mongoose.set('debug', true);
}require('./models/User');
require('./models/Referral');
require('./models/Student');
#2 : Model
var mongoose = require('mongoose');
var randomstring = require("randomstring");var SliderSchema = new mongoose.Schema({
name: String,
description: String,
image: String,
status: {
type: String,
default: "ACTIVE"
},
}, {timestamps: true});mongoose.model('Slider', SliderSchema);
#3 : .env
require('dotenv').config();PORT=8040PORT=8040
MONGODB_URI=mongodb+srv://sourav:iFEsJ17qgRowAz6W@cluster0.wyfk8.mongodb.net/tlidb
SECRET=somethingsecret
#4 : Using a model
var Slider = mongoose.model('Slider');router.get("/slider", function(req,res,next){Slider.find({}).lean().then(function(sliders){
res.json(sliders).status(200);
}).catch(next);});var slider = new Slider({name: "",description: ""})
await slider.save()
Passport
#5 : Model
var mongoose = require('mongoose');
var randomstring = require("randomstring");var StudentSchema = new mongoose.Schema({
email: String,
passoword: String,
}, {timestamps: true});mongoose.model('Student', StudentSchema);require('./config/passport');######### Passport code ################var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var mongoose = require('mongoose');
var User = mongoose.model('User');
var Student = mongoose.model('Student');passport.use("student",new LocalStrategy({
usernameField: 'student[email]',
passwordField: 'student[password]'
}, function(email, password, done) {
Student.findOne({email: email}).then(function(student){
if(!student || !student.validPassword(password)){
return done(null, false, {errors: {'email or password': 'is invalid'}});
}return done(null, student);
}).catch(done);
}));############### authenticating during login #######################var passport = require("passport");
var router = require("express").Router();
var mongoose = require("mongoose");
var moment = require("moment");
var Student = mongoose.model("Student");
var auth = require("../auth");
var passport = require("passport");router.get("/login/dummy", function (req, res, next) {
req.body = {};
req.body.student = {};
req.body.student.email = "dummy@email.com";
req.body.student.password = "dummypass";
// student.studentId = Shortid.generate();if (!req.body.student.email) {
return res.status(422).json({ errors: { email: "can't be blank" } });
}if (!req.body.student.password) {
return res.status(422).json({ errors: { password: "can't be blank" } });
}passport.authenticate(
"student",
{ session: false },
function (err, student, info) {
if (err) {
return next(err);
}if (student) {
student.token = student.generateJWT();
let response = student.toAuthJSON();
response.isProfileCompleted = student.username ? true : false;
return res.json({ student: response });
} else {
return res.status(422).json(info);
}
}
)(req, res, next);
});
#6 : Auth
var jwt = require('express-jwt');
var secret = require('../config').secret;function getTokenFromHeader(req){
if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Token' ||
req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
return req.headers.authorization.split(' ')[1];
}return null;
}var auth = {
required: jwt({
secret: secret,
userProperty: 'payload',
getToken: getTokenFromHeader
}),
optional: jwt({
secret: secret,
userProperty: 'payload',
credentialsRequired: false,
getToken: getTokenFromHeader
})
};module.exports = auth;
Using
var auth = require("../auth");