MDN Express教程中使用的express-validator

时间:2018-08-09 02:43:15

标签: node.js express express-validator

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

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

我不明白为什么trim()isLength()验证之后被链接到。难道不是相反吗,还是两种语义都一样?

我确实尝试在express-validator文档中环顾四周,但没有成功。

更新

对于gustavohenke的回答,我想让我感到困惑的是,我看到了两个消毒点,如下面的MDN Express教程屏幕截图所示:

MDN express tutorial regarding validation/sanitization

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

但是,根据我的描述,是快速教程中的文档(即验证步骤中的消毒剂仅适用于该验证步骤,并且不会更改请求,因此需要另一个消毒剂) 不再为真。换句话说,我认为您可以在一个链中进行所有消毒和验证。

1 个答案:

答案 0 :(得分:1)

首先要弄清楚:trim是一种消毒剂,而不是像isLength这样的验证器。

当前(自v5.x.x版本起),当您在同一链中同时指定消毒剂和验证剂时,消毒剂将始终 运行在验证剂之前。如果您指定更多消毒剂,它们将按照指定的顺序运行。

It's documented behaviour,但是很容易看不到它:

  

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

您可能已经猜到,这是用户感到惊讶的地方,it's planned to change on an upcoming major version