[英]Hapi/Joi validation
Joi验证中的with()和without()函数有什么作用?
const schema = Joi.object().keys({
username: Joi.string().alphanum().min(3).max(30).required(),
password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/),
access_token: [Joi.string(), Joi.number()],
birthyear: Joi.number().integer().min(1900).max(2013),
email: Joi.string().email()
}).with('username', 'birthyear').without('password', 'access_token');
摘自hapijs API参考 :
object.with(key, peers)
只要指定的密钥存在于以下位置,就需要其他密钥的存在:
key
参考键。
peers
必须与密钥一起出现的必需对等密钥名称。peers
可以是单个字符串值,也可以是字符串值数组。
转换为您的示例,意思是“当密钥username
存在时,密钥birthyear
也必须存在”。
object.without(key, peers)
只要在以下位置存在指定项,就禁止存在其他键:
key
参考键。
peers
禁止与其他密钥一起出现的对等密钥名称。peers
可以是单个字符串值,也可以是字符串值数组。
转换为您的示例,意思是“当存在密钥password
也不允许存在密钥access_token
”。
.with(keyA, keyB)
表示当存在keyA时必须存在keyB。
您的架构示例没有充分利用.with()
因为“用户名”是必需的键。 然后,您也可以要求“生日”。
.without(keyA, keyB)
表示当存在keyA时不能存在keyB。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.