Its my first foray into building a REST api with node/express and I have different routes based on resource type (e.g. users, auth, feed). im using express-validator in all the routes, and some of the users routes need to be protected with some extra auth middleware. But the additional middleware seems to be executing 10 times instead of once...what am I not understanding here?
app.js:
const express = require("express");
const authRoutes = require("./routes/auth");
const feedRoutes = require("./routes/feed");
const userRoutes = require("./routes/user");
var app = express();
app.use(authRoutes);
app.use(feedRoutes);
app.use(userRoutes); //userRoutes contains protected routes
app.use((error, req, res, next) => { //express built in error handler
//console.log("errorhandler: " + error);
const status = error.statusCode || 500;
const message = error.message;
const data = error.data;
res.status(status).json({ message: message, data: data });
});
const PORT = process.env.PORT || 8080;
...remaining code
routes/user.js:
//user resource related routes
const express = require("express");
//controllers and middlewares
const userController = require("../controllers/user");
const validateInputs = require("../middleware/validateInputs");
const validateAuthTokens = require("../middleware/validateAuthTokens");
//routes that use the controllers
const router = express.Router();
//protect these routes with the validateAuthToken middleware
router.get("/users/:userID/favorites", validateInputs.getFavoritesValidationRules(), validateAuthTokens, userController.getFavorites);
router.post("/users/:userID/favorites", validateInputs.addFavoriteValidationRules(), validateAuthTokens, userController.addFavorite);
//delete and add have same params and validation rules
router.delete("/users/:userID/favorites", validateInputs.addFavoriteValidationRules(), validateAuthTokens, userController.deleteFavorite);
module.exports = router;
middleware/validateAuthToken.js:
module.exports = (req, res, next) => {
console.log("inside validateAuthTokenMiddleware");
//remaining auth code
next();
}
CURRENT OUTPUT:
server now listening!
inside validateAuthTokenMiddleware 1
inside validateAuthTokenMiddleware 2
inside validateAuthTokenMiddleware 3
inside validateAuthTokenMiddleware 4
inside validateAuthTokenMiddleware 5
inside validateAuthTokenMiddleware 6
inside validateAuthTokenMiddleware 7
inside validateAuthTokenMiddleware 8
inside validateAuthTokenMiddleware 9
inside validateAuthTokenMiddleware 10
Why is the auth validation middleware executing so many times???