Замена для req.param(), которая устарела в Express 4
Мы переносимся с ExpressJS 3 на ExpressJS 4, и мы отметили, что следующие API-интерфейсы устарели:
req.param(fieldName)
req.param(fieldName, defaultValue)
Есть ли промежуточное программное обеспечение, которое возвращает эти API, как и другие API-интерфейсы, которые были "экстернализованы" от экспресс к независимым модулям?
Ответы
Ответ 1
Хорошо, прочитав темы, приведенные в ссылках by @Ineentho, мы решили придумать следующий ответ:
https://github.com/osher/request-param
Связующее/промежуточное программное обеспечение для включения обратно API req.param(имя, по умолчанию), устаревшего в express 4
Среднее программное обеспечение не только возвращает функциональность goo'old.
Он также позволяет настраивать порядок коллекций, из которых извлекаются параметры, как в качестве правила по умолчанию, так и для каждого вызова: -)
Удачи!
Ответ 2
Основываясь на экспресс-документации, мы должны использовать это как
Вкл express 3
req.param(fieldName)
Вкл express 4
req.params.fieldName
Лично я предпочитаю req.params.fieldName
вместо req.param(fieldName)
Ответ 3
Почему вы хотите вернуть его? Там была причина, по которой она была устаревшей, и поэтому вы, вероятно, должны отойти от нее.
Обсуждение того, почему они обесценивают API, доступно на своем трекере проблем как # 2440.
Функция - быстрый и грязный способ получить значение параметра от req.params
, req.body
или req.query
. Это может, конечно, вызвать проблемы в некоторых случаях, поэтому они их удаляют. См. Функцию для себя здесь.
Если вы используете функцию для параметров url, вы можете просто заменить ее на проверку req.query['smth'] or 'default'
:
var param_old = req.param('test', 'default');
var param_new = req.query['test'] || 'default';
(Обратите внимание, что пустая строка оценивается до false
, поэтому они на самом деле не на 100%. То, что вы хотите, конечно, зависит от вас, но по большей части это не имеет значения.)