Экспресс-валидатор, используемый в MDN Express Tutorial
В учебнике по экспресс-MDN здесь используется следующий код для проверки
// Validate that the name field is not empty.
body('name', 'Genre name required').isLength({ min: 1 }).trim(),
Чего я не понимаю, так это почему trim()
прикован после isLength()
Проверка. Разве это не должно быть наоборот, или это та же самая семантика в любом случае?
Я попытался просмотреть документ экспресс-проверки на предмет упоминания чего-то подобного, но безуспешно.
ОБНОВИТЬ
В ответ на ответ Густавохенке, я думаю, что меня смутило то, что я увидел две точки санации, как показано на скриншоте учебника MDN express ниже:
поэтому, когда я прочитал документ для проверки экспресс- проверки "Если вы используете какое-либо из дезинфицирующих средств вместе с валидаторами, проверенное значение является очищенным", мне было интересно, какой пункт дезинфекции?
Из того, что я охарактеризовал, однако, является то, что документация в экспресс-руководстве (где говорится, что дезинфицирующие средства на этапе валидации применяются только к этому шагу валидации и не изменяют запрос, и поэтому требуется другое дезинфицирующее средство) больше не соответствует действительности., Другими словами, я думаю, что вы можете выполнять всю дезинфекцию и валидацию в одной цепочке.
1 ответ
Чтобы понять это сначала: trim
это дезинфицирующее средство, а не валидатор, как isLength
,
В настоящее время (по состоянию на v5.xx), когда вы указываете и дезинфицирующие средства, и валидаторы в одной и той же цепочке, дезинфицирующие средства всегда запускаются перед валидаторами. Если вы укажете больше дезинфицирующих средств, они будут работать в указанном порядке.
Это задокументированное поведение, но его довольно просто не увидеть:
Если вы используете какое-либо дезинфицирующее средство вместе с валидаторами, то проверенное значение является очищенным.
Как вы, наверное, догадались, это удивляет пользователей, и планируется перейти на следующую основную версию.