繁体   English   中英

Hapi / Joi验证

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM