使用express-validator自定义验证器验证两个字段

时间:2018-11-15 10:56:44

标签: node.js express express-validator

我有两个字段:登录名和密码。我使用自定义验证器进行验证:

login: {
  isNotNull: { errorMessage: 'Required field' },
  isServiceUser: {
    errorMessage: 'Failed to login',
    options: req.body.password,
  },
},
password: {
  isNotEmpty: { errorMessage: 'Required field' },
}

isServiceUser通过向其他服务发出http请求来进行验证。如何同时验证它们并发送给客户两个字段均无效?

1 个答案:

答案 0 :(得分:0)

您可以使用自定义验证。

假设您要检查密码(如果存在)和用户名:

const { check, validationResult } = require('express-validator/check')
app.post(upload.single('customerImage'),[
check('name').custom(async (name, {req}) => {
                // api request for fetching user name
                const res = await getCust(name) 
                // change if condition to make it do what you want
                if(!res && req.body.password === ""){
                     throw new Error('user name or password invalid')
                }
                })], (req, res) => { 
                       const errors = validationResult(req)
                       if(!errors.isEmpty()){
                           return res.status(442).json({ errors: errors.array() })
                       }
                       //do something
                })

您必须根据需要更改验证条件。

如果您想使用Schema Validation