Reputation: 2761
I have an express route like,
in router/blog.js
router.get('/', middleware.isLoggedIn, function(req,res){
//some code
res.render('blogs');
})
...(i)
Then i have another route for adding a blogs like,
router.get('/new', middleware.isLoggedIn, function(req,res){
//some code
res.render('newBlog');
})
...(ii)
The problem is, when i am going to /blogs/new
in my browser, the code from (i) executes also but it doesn't render the blogs
template.
why is (ii) hitting (i)?
Update
This is the middleware:
middleware.isLoggedIn = function (req, res, next) {
if (req.session.isLoggedIn) { //this will be true if the user is autenticated
return next();
} else {
req.flash('login','Please Login First!');
res.redirect('/login');
}
};
in app.js:
const express = require('express');
const app = express();
var blog = require('./routes/blog');
app.use('/blogs', blog);
Upvotes: 1
Views: 907
Reputation: 578
I think your error may be somewhere else in your code and a more complete example may help in spotting that.
This simple example works as intended and only calls the route and the middleware once, hitting the correct one.
const express = require('express');
const app = express();
app.get('/blogs', testMiddleware, (req, res) => {
res.json({'route': 'blogs'});
});
app.get('/blogs/new', testMiddleware, (req, res) => {
res.json({'route': 'blogs-new'});
});
function testMiddleware(req, res, next) {
console.log(req.url);
next();
}
app.listen(3000);
Can you provide some more code? Are you 100% sure that the middleware is hit twice (or from the wrong route)?
Upvotes: 1