res.send()
не заканчивает выполнение промежуточного программного обеспечения, но отсутствие вызова next()
будет.Итак, в вашем случае, я думаю, что цепочка другого промежуточного программного обеспечения после того, как ваш обработчик маршрута - правильный подход, просто убедитесь, что он заканчивается вызовом next()
.
Пример:
// router.js
const express = require('express')
const router = express.Router()
const routeHandler = require('../controllers/route-handler')
const logResponse = require('../middleware/log-response')
router.get('/', routeHandler, logResponse)
// controllers/route-handler.js
function routeHandler(req, res, next) {
// Do some stuff
res.status(200).json({})
return next() // <-- This is the key -- it will continue to the next middleware
}
module.exports = {
routeHandler
}
// middleware/log-response.js
function logResponse(req, res, next) {
console.log(res.status, res.statusText) // 200 OK
}
module.exports = {
logResponse
}
Надеюсь, это поможет!