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教程屏幕截图所示:
因此,当我阅读express-validator的验证文档时,“如果您将任何消毒剂与验证器一起使用,则验证后的值就是经过消毒的值”。我想知道哪个消毒点?
但是,根据我的描述,是快速教程中的文档(即验证步骤中的消毒剂仅适用于该验证步骤,并且不会更改请求,因此需要另一个消毒剂) 不再为真。换句话说,我认为您可以在一个链中进行所有消毒和验证。
答案 0 :(得分:1)
首先要弄清楚:trim
是一种消毒剂,而不是像isLength
这样的验证器。
当前(自v5.x.x版本起),当您在同一链中同时指定消毒剂和验证剂时,消毒剂将始终 运行在验证剂之前。如果您指定更多消毒剂,它们将按照指定的顺序运行。
It's documented behaviour,但是很容易看不到它:
如果您将任何消毒剂与验证器一起使用,则经过验证的值为消毒后的值。
您可能已经猜到,这是用户感到惊讶的地方,it's planned to change on an upcoming major version。