Проблема растет из того, что я не до конца понимаю, как работают цепочки промежуточных обработчиков в Express.
В проекте есть роут, который исправно обрабатывает post-запросы:
const express = require('express');
const router = express.Router();
const jsonParser = express.json();
const controller = require('../controllers/regController');
router.post('/', jsonParser, function (req, res) {
if (!req.body) return res.sendStatus(400);
console.log(req.body);
res.json(
{
serverErr: '',
fieldsErr: {
username: 'Тест',
}
}
);
})
module.exports = router;
Я выношу логику обработку этого роута в контроллер. Для этого в regRouter.js оставляю:
router.post('/', jsonParser, controller.register);
А из regController.js экспортирую функцию:
module.exports.register = function (req, res) {
if (!req.body) return res.sendStatus(400);
console.log(req.body);
res.json(
{
serverErr: '',
fieldsErr: {
username: 'Тест',
}
}
);
})
Этот вариант тоже работает, но как мне вынести в контроллер и jsonParser? Или он, как middlware верхнего уровня всегда должен оставаться в блоке и предшествовать "кастомным" обработчикам роута?