2017-07-14 5 views
0

私はexpress-validatorを使用してリクエストデータを検証しています。ドキュメントを追加するには、このように宣言する必要があります。express-validator:カスタムバリデーターでさらに検証をスキップ

app.use(expressValidator({ 
customValidators: { 
    isArray: function(value) { 
     return Array.isArray(value); 
    }, 
    gte: function(param, num) { 
     return param >= num; 
    } 
} 
})); 

ドキュメントのようにバリデーターを追加しました。私は本当か偽かしか戻ってこない。

条件バリデーターに基づいて、チェーン検証をスキップしてください。

答えて

0

あなたは段階的に行うことができます。ここでは、最初にユーザー名が設定されているかどうかをチェックし、そのパスがあった場合にのみ高価な非同期検証を行います。うまく

req.checkBody('username') 
     .notEmpty().withMessage('Username is required.'); 

req.getValidationResult().then(result => { 
     if (!result.isEmpty()) { 
      return res.status(400).send(result.mapped()); 
     } 

     req.checkBody('username') 
      .isUserNameAvailable().withMessage('Username is not available.'); 

     req.getValidationResult().then(result => { 
      if (!result.isEmpty()) { 
       return res.status(400).send(result.mapped()); 
      } 
      next(); 
     }); 

}) 
+0

私は1つのフィールドまたは異なるフィールドの3〜4の検証を持っている場合、あなたは、コードの意志を台無しにしないと思います。これとは別の方法があるはずです。 –

関連する問題