#javascript #node.js #express
Вопрос:
Итак, у меня есть обработчик 404 и файл маршрутизатора:
404 обработчик:
app.all("*", (req, res, next) => {
res.status(404).json({
"status": "failed",
"message": "woops, page not found..."
})
})
Маршрутизатор:
orderRouter.route('/')
.post((req, res, next, optionalData) => {
res.status(200).json({
"status": "ok"
})
})
module.exports = orderRouter
Как мы видим, я добавляю дополнительные аргументы в промежуточное программное обеспечение, то есть «optionalData«.
Когда я получаю доступ к сообщению о маршруте / методе, я получаю результат 404.
Но когда я определяю, что optionalData = не определено, это работает. Я получил результаты «статус»: «ок».
(req, res, next, optionalData = undefined)
Но почему? что здесь происходит..
Ответ №1:
Ожидается, что обработчики регулярных запросов Express будут иметь не более 3 аргументов, как вы можете убедиться здесь.
И глядя вверх Function.length
:
длина является свойством объекта функции и указывает, сколько аргументов ожидает функция, т. е. количество формальных параметров. Это число исключает параметр rest и включает только параметры перед первым со значением по умолчанию.
Становится понятно, почему вторая функция работает, а первая-нет:
(function(a, b, c, d = undefined) {}).length === 3
(function(a, b, c, d) {}).length === 4