How do I check that password and password_confirmation are the same ?
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
}
}
You can use Joi.any().valid()
with 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' } } })
If you got "language" is not allowed
error message. Oh, you've come to the right place.
Now, 2020 and with Joi v17.2.1 we can use Joi.any().equal()
or Joi.any().valid()
with Joi.ref()
and custom message with 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' })
Or use 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'} })
Validate error will show ValidationError: "Confirm password" does not match
if not match.
And show ValidationError: "Confirm password" is required
if you have not pass password_confirmation
.
Hope useful to someguys.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.