0

这里的 Express MDN 教程使用以下代码进行验证步骤

// Validate that the name field is not empty.
body('name', 'Genre name required').isLength({ min: 1 }).trim(),

我不明白为什么在验证后被trim()链接。不应该是相反的方式,还是两种方式的语义相同?isLength()

我确实尝试在 express-validator 文档中四处寻找类似这样的内容,但没有成功。

更新

针对 gustavohenke 的回答,我认为让我感到困惑的是,我看到了两个清理点,如下面的 MDN 快速教程截图所示:

MDN 关于验证/清理的快速教程

因此,当我阅读express-validator的验证文档“如果您将任何消毒剂与验证器一起使用时,验证值就是经过消毒的值”,我想知道哪个消毒点?

然而,从我的特点来看,快速教程中的文档(即验证步骤中的消毒剂仅适用于该验证步骤并且不会改变请求,因此需要另一个消毒剂)不再正确. 换句话说,我认为你可以在一条链中完成所有的清理和验证。

4

1 回答 1

1

首先要弄清楚:trim是消毒剂,而不是验证器,例如isLength.

目前(从 v5.xx 开始),当您在同一链中同时指定 sanitizer 和验证器时,sanitizer 将始终在验证器之前运行。如果您指定更多消毒剂,它们将按指定的顺序运行。

这是记录在案的行为,但很容易看不到它:

如果您将任何消毒剂与验证器一起使用,则验证值就是经过消毒的值。

正如您可能已经猜到的那样,这让用户感到惊讶,并且计划在即将到来的主要版本中进行更改

于 2018-08-09T23:54:04.547 回答