我试图断言2个密码匹配:
app.post('/users/signup', [
check('email', 'email is not valid')
.isEmail()
.trim(),
check('password')
.isLength({ min: 4 })
.withMessage('password must be at least 4 characters')
.equals('passwordConfirmation'),
], (req, res) => {
...
我正在使用equals
,但它正在检查password
是否实际上等于字符串'passwordConfirmation'
而不是值req.body.passwordConfirmation
答案 0 :(得分:0)
你不能按照你想要的方式使用它。
我猜测,在您的表单或您的请求正文中,您有两个字段:
password
confirmPassword
您可以通过以下方式访问:
req.body.password
req.body.confirmPassword
如果这是正确的,那么您将无法使用check
API验证两者是否相同,因为您无法在某个时间点访问req
对象
您可以做的是围绕check
编写包装中间件:
const check = require('express-validator/check')
exports.verifyPasswordsMatch = (req, res, next) => {
const {confirmPassword} = req.body
return check('password')
.isLength({ min: 4 })
.withMessage('password must be at least 4 characters')
.equals(confirmPassword)
}
然后像这样使用包装器:
app.post('/users/signup', [
check('email', 'email is not valid')
.isEmail()
.trim(),
verifyPasswordsMatch,
], (req, res) => {
...
以上是未经测试的,但希望能够展示您需要做的事情。