reactjs - joi 根据另一个字段设置布尔默认值
问题描述
假设我有这个带有两个键 a 和 b 的对象。a 是字符串,b 是布尔值。我正在寻找的是如果 a 为空白,则 b 如果不是 false,则默认值为 true。
这个架构
Joi.object({
'a': Joi.string(),
'b': Joi.alternatives()
.when('a', {
is: '',
then: Joi.boolean().default(true),
otherwise: Joi.boolean().default(false)
})
})
与对象引发错误“无法将备选方案与布尔值组合”
{
a: '',
b: false
}
这可能超出了乔的本意,但我很好奇。
解决方案
.default()可以接受带有参数(父级、助手)的函数,使用父级可以访问任何对象值并执行以下操作:
const schema = Joi.object({
a: Joi.string().allow(''),
b: Joi.boolean().default((parent) => parent.a == '')
})
// Object {value: Object {a: "", b: true}}
schema2.validate({ a: '' })
// Object {value: Object {a: "", b: false}}
schema2.validate({ a: 'aaa' })
推荐阅读
- c++ - 为什么g ++显示未声明“gets()”,即使包括在内
- reactjs - React / TypeError:files.map 不是函数
- r - 如何使用 readWave() 消除 foreach 循环错误?
- bigcommerce - 如何使用 Authorize.net 作为支付网关将 GooglePay 集成到 Big Commerce 商店?
- android - 使用自我管理的 ConnectionService 拨打电话在三星上不起作用
- javascript - 使用 PHP 的计数器系统
- sql - 为什么我的更新语句在 SQL Server Management Studio 中对我的 Azure 数据库不起作用?
- java - junit5 的问题 - @DisplayName 不显示 testName
- javascript - 在 React 中传播对象
- json - 使用 jq 搜索属性的值并返回另一个值