我正在考虑使用 Joi 进行 api 验证。
我似乎无法确认我的架构是否正确,因为我希望需要电子邮件或手机(但它们都不能为空/不存在) - 以下是否正确?
var schemaForRegistration = Joi.object().keys({
email: Joi.string().email(),
mobile:Joi.number().integer()
}).without('email', 'mobile');
谢谢
最佳答案
可能是 or()
是您所追求的。
试试这个:
const Joi = require('joi')
const schema = Joi.object().keys({
email: Joi.string().email(),
mobile: Joi.number().integer()
}).or('email', 'mobile')
Joi.validate({ email: '[email protected]', mobile: '999000999000' }, schema, console.log)
Joi.validate({ mobile: '999000999000' }, schema, console.log)
Joi.validate({ email: '[email protected]' }, schema, console.log)
Joi.validate({}, schema, console.log)
最终验证将失败,因为电子邮件和手机都不存在。
关于javascript - Joi Schema 应该包含一个字段或另一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35489652/