Soy un novato en toda la lógica de enrutamiento expreso (y nodo y js para el caso). Pero tengo un problema que parece que no puedo rastrear, pero creo que entiendo el contexto. Bueno, eso no tenía mucho sentido, aquí va de todos modos.
Estoy tratando de omitir el middleware condicionalmente en función de los datos en el req.query y hace que la página de formulario deseada esté bien, excepto por el hecho de que aparece 'No se puede enviar el encabezado dos veces ...' en la consola del middleware anterior, que pensé que me había saltado.
Por lo que puedo deducir, next() debería llevarme al siguiente middleware instantáneamente y omitir el resto del bloque por completo (algo así como un return lo expulsa de una función). ¿No es esto correcto?
ruta: localhost:3000/JohnnyBoy?acción=formulario
router.get('/:name/', function(req, res, next) { if(req.query.action !== 'view') { next(); }; console.log('Why am I seeing this in the console?'); res.render('first', { title: req.params.name }); }); router.get('/:name/', function(req, res, next) { res.render('form', { title: req.params.name + ' This is a form page', formFields: fields.userPostFields() }); });Necesitas poner return; después de llamar a next() ; solo llamar a next() no detendrá la ejecución de la función actual.
Reemplazar
if(req.query.action !== 'view') { next(); };
con
if(req.query.action !== 'view') { next(); return;};