An Express application can use the following types of middleware:
Application-level middleware
Router-level middleware
Error-handling middleware
Built-in middleware
Third-party middleware
var app = require("express")();
//This is the middleware function which will be called before any routes get hit which are defined after this point, i.e. in your index.js
app.use(function (req, res, next) {
var authorised = false;
//Here you would check for the user being authenticated
//Unsure how you're actually checking this, so some psuedo code below
if (authorised) {
//Stop the user progressing any further
return res.status(403).send("Unauthorised!");
}
else {
//Carry on with the request chain
next();
}
});
//Define/include your controllers
//4 types of middleware document,query,aggregate and model
//document middleware run before .save() and .create()
const slugify = require('slugify')
tourSchema.pre('save',function(next) {
console.log('will save document')
this.slug= slugify(this.name,{lower:true})
next()
})
1)Express app receives a request when someone hits a server for which it will create
request and response.
2)middleware is used to manipulate request.
3)It is middleware because it is a function that run between request and response cycle.
4) middleware stack. middleware that appear first will run first.
5)middleware is like pipeline which end with response object.
//Creating own middleware
//this middleware apply to each and every request
//so, if we put in last then it will not work.
app.use((req,res,next)=> {
console.log('Hello from middleware')
next()
})
//adding request time
app.use((req,res,next)=> {
req.requestTime= new Date().toISOString() //this is method and we need to call that
next()
})