如何检查密码和password_confirmation是否相同?
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
}
}
答案 0 :(得分:21)
您可以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' } } })
答案 1 :(得分:5)
如果收到"language" is not allowed
错误消息。哦,您来对地方了。
现在,到2020年,并且在Joi v17.2.1中,我们可以将Joi.any().equal()
与Joi.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
。
希望对某些人有用。