13

如何检查密码和密码确认是否相同?

var Joi = require('joi'),
S = Joi.string().required().min(3).max(15);
exports.create = {
   payload: {
            username: S,
            email: Joi.string().email(),
            password: S,
            password_confirmation:  S
   }
}
4

2 回答 2

40

您可以Joi.any().valid()使用Joi.ref()

password: Joi.string().min(3).max(15).required(),
password_confirmation: Joi.any().valid(Joi.ref('password')).required().options({ language: { any: { allowOnly: 'must match password' } } })
于 2015-04-23T16:19:31.203 回答
22

如果您收到"language" is not allowed错误消息。哦,你来对地方了。

现在,2020 年和 Joi v17.2.1 我们可以使用Joi.any().equal()orJoi.any().valid()Joi.ref()自定义消息messages()

password: Joi.string().min(3).max(15).required().label('Password'),
password_confirmation: Joi.any().equal(Joi.ref('password'))
    .required()
    .label('Confirm password')
    .messages({ 'any.only': '{{#label}} does not match' })

或使用options()

password: Joi.string().min(3).max(15).required().label('Password'),
password_confirmation: Joi.any().equal(Joi.ref('password'))
    .required()
    .label('Confirm password')
    .options({ messages: { 'any.only': '{{#label}} does not match'} })

ValidationError: "Confirm password" does not match如果不匹配,将显示验证错误。
并显示ValidationError: "Confirm password" is required你是否还没有通过password_confirmation

希望对某些人有用。

于 2020-10-21T15:03:42.590 回答