У меня есть следующие маршруты определенывложенные маршруты в expressJS
router.get('/:company', function (req, res, next) {
// 1. call database and get company data
// 2. render company view
})
router.get('/:company/employees', function (req, res, next) {
// 1. call database and get company data
// 2. call database and get employees data
// 3. render employees view
})
Как объединить эти 2 маршрута, чтобы сделать только один вызов к базе данных, чтобы получить данные о компании. В принципе, я просто хочу повторить эту логику.
I'm ищет что-то вроде этого (проверено, но он не работает)
router.get('/:company', function (req, res, next) {
// 1. call database and get company data
// 2. render company view
router.get('/:company/employees', function (req, res, next) {
// no need to call database to get company data. we already have it
// 1. call database and get employees data
// 2. render employees view
})
})
Вы не можете вкладывать маршруты. Это создает хаос. Сначала маршрут не активен до тех пор, пока сначала не пострадает родительский маршрут, а затем новый обработчик маршрута (и, следовательно, дублирующий обработчик маршрута) будет установлен каждый раз, когда пострадает родительский маршрут. Не могу так. Просто переместите общий код в общую функцию, которую вы можете вызывать из нескольких маршрутов. Забавно, как архитектура диспетчера маршрутов Express каким-то образом заставляет людей забывать о базовых принципах программирования, заключающихся в том, что общий код используется в общей функции, которую можно вызывать из нескольких мест. – jfriend00
@ jfriend00 - «Смешно, как архитектура диспетчера маршрутов Express как-то заставляет людей забывать о базовых принципах программирования, заключающихся в том, что общий код используется в общей функции, которую можно вызывать из нескольких мест.» «: P – Rayon
да смешно. ха-ха-ха. – handsome