Necesito entender cómo funciona el flujo en una aplicación Express usando Rutas, tengo Estas Rutas
app.use(require('./routes/reportsRouter')); app.use(require('./routes/crewsRouter')); app.use(require('./routes/api')); app.use(require('./routes/filesRouter'));Ahora en ./routes/crewsRouter tengo el siguiente código
var express = require('express'); var router = express.Router(); router.use(function(req, res, next) { var url = req.url; //..... Edit URL if Contains // empty parm // crews//today; correct Url crews/all/today // this give me a list of all jobs for all crews for today. console.log("CrewsRouter: ", req.method + ".( " + url + " )"); next(); }); router.get('/crews', function(req, res) { if (!req.params.key) { next(); } res.render('crewsView',{ pageTitle:'All-Crews', pageID:'crews', crewInfo: {"aka": "all"}, reqOptions: '' }); }); router.get('/crews/:leadId?/:options?', function(req, res) {....} module.exports = router;y en informesRouter.js
var express = require('express'); var router = express.Router(); router.use(function(req, res, next) { // log each request to the console console.log("ReportsRouter: ", req.method + ".( " + req.url + " )"); // continue doing what we were doing and go to the route next(); }); router.get('/reports', function(req, res) { //var data = req.app.get('appData') res.render('reportsView',{ pageTitle:'Reports', pageID:'reports' }); }); module.exports = router; El comportamiento que estoy teniendo es sin importar qué ruta solicito, tanto la ruta como el route.use se están ejecutando. ¿Es esto normal y qué puedo hacer para detener este comportamiento?
let crewsRouter = require('routes/crewsRouter'); ... app.use('/crews', crewsRouter); app.use('/reports', reportsRouter);# tripulaciones
... router.get('/', function(req, res) { ... # this used to be your '/crews' handler }# informes
... router.get('/', function(req, res) { ... # this used to be your '/reports' handler }Probablemente deberías estar haciendo algo como esto:
app.use('/reports', require('./routes/reportsRouter')); app.use('/crews', require('./routes/crewsRouter')); app.use('/api', require('./routes/api')); app.use('/files', require('./routes/filesRouter')); Y luego en su reportsRouter de informes:
var express = require('express'); var router = express.Router(); router.use(function(req, res, next) { // log each request to the console console.log("ReportsRouter: ", req.method + ".( " + req.url + " )"); // continue doing what we were doing and go to the route next(); }); router.get('/', function(req, res) { //var data = req.app.get('appData') res.render('reportsView',{ pageTitle:'Reports', pageID:'reports' }); }); module.exports = router; Y sus crewsRouter :
var express = require('express'); var router = express.Router(); router.use(function(req, res, next) { var url = req.url; //..... Edit URL if Contains // empty parm // crews//today; correct Url crews/all/today // this give me a list of all jobs for all crews for today. console.log("CrewsRouter: ", req.method + ".( " + url + " )"); next(); }); router.get('/', function(req, res) { if (!req.params.key) { return next(); } res.render('crewsView',{ pageTitle:'All-Crews', pageID:'crews', crewInfo: {"aka": "all"}, reqOptions: '' }); }); router.get('/:leadId?/:options?', function(req, res) {....}); module.exports = router;