@Mazino

Как использовать в качестве обработчика функцию возвращаемую другой функцией?

Изучаю nodejs, сейчас пытаюсь организовать роуты на express похожим с laravel образом. Пример кода:
// Router
const controller = require('../controllers/index')
module.exports = (app) => {
  app.get('/users', controller('UserController@index'))
}

// Controller index aka controller()
const fs = require('mz/fs')
module.exports = (handler) => {
  const [controller, method] = handler.split('@')
  const controllers = fs
    .readdirSync(__dirname)
    .filter((v) => v !== __filename.slice(__dirname.length + 1))
    .map(v=> v.slice(0,-3))

  if (controllers.includes(controller)) {
    return require(`./${controller}`)[method]
  } else {
    console.error(`Controller with name ${controller} doesnt exist!`)
  }
}

Вопрос, как правильно это переписать, что обработчик корректно передавался в роут?

upd: Идея в том, чтобы заставить метод get() передавить аргументы той функции, которую вернет controller()
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы