1

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

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

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

4

1 回答 1

1

您可以使用自定义验证。

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

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
                })

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

如果你想使用模式验证

于 2019-04-03T18:50:07.190 回答