javascript - Joi Schema 应该包含一个或另一个字段

标签 javascript joi

我正在考虑使用 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: 'xxx@yyy.com', mobile: '999000999000' }, schema, console.log)
Joi.validate({ mobile: '999000999000' }, schema, console.log)
Joi.validate({ email: 'xxx@yyy.com' }, schema, console.log)
Joi.validate({}, schema, console.log)

最终验证将失败,因为电子邮件和手机都不存在。

关于javascript - Joi Schema 应该包含一个或另一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35489652/

相关文章:

Joi 验证嵌套模式的各个字段

javascript - javascript 函数调用是否在整个脚本解析完成之前运行?

javascript - Ext.Net 按钮更改字体大小

javascript - 根据另一键的输入,根据需要进行一个输入

validation - 是的 vs Joi 进行前端验证

javascript - 使用 Joi 验证对象的两个键应该具有相同的值?

javascript - setState 的真实世界用法与更新回调而不是在 React JS 中传递对象

php - Javascript和php交互通过一个数组

javascript - 如何查找方括号之间的字符串并将其包装在 CSS 类中

hapijs - JOI 电子邮件验证