Nodejs Backend

sourav mandal
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");

--

--

sourav mandal

just a coder who forgets things so makes blogs so he can remember later