Как работает роутер на 2 контроллера? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть следующее в маршрутах, где controllers относится к Home контроллеру, где crud - для выполнения общей операции crud для каждой модели.

var controllers = require('../controllers/home');
var Home = require('../models/home');
var crud = require('../controllers/crud')(Home, ['name', 'location', 'company'], ['company']);

router.get('/', crud.RetrieveList, controllers.Index);

Как маршрутизатор вызывает эти 2 контроллера?

1 Ответ

0 голосов
/ 13 мая 2019

Маршрутизатор вызывает обработчики как конвейер. Параметры после '/' должны быть обработчиками, которые принимают 3 параметра (запрос, ответ, следующий обработчик) и вызовы следующего обработчика, только если предыдущий обработчик вызывает его.

Пример:

// First request handler.
const handler1 = (req, res, next) => {
  // Check if we have `?do_error=1` in requested URL.
  if (req.query.do_error === '1') {
    return res.send('Error by first handler.');
  }
  
  // Go next handler (if not returned with error).
  next();
}

// Second request handler.
const handler2 = (req, res, next) => {
  res.send('Message by second handler.');
}

// Init route.
router.get('/', handler1, handler2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...