我正在尝试验证 POST 请求,其中 POST 请求title可以是带有语言键和值的字符串或对象。例子:
{
title: 'Chicken',
...
}
//OR
{
title: {
en_US: 'Chicken',
de_DE: 'Hähnchen'
}
...
}
Run Code Online (Sandbox Code Playgroud)
和 Joi 我试图像这样验证:
{
title: Joi.any().when('title', {
is: Joi.string(),
then: Joi.string().required(),
otherwise: Joi.object().keys({
en_US: Joi.string().required(),
lt_LT: Joi.string()
}).required()
}),
...
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试验证时出现错误AssertionError [ERR_ASSERTION]: Item cannot come after itself: title(title)
有没有办法使用when相同的字段?
Ank*_*nkh 15
看看 using.alternatives()而不是.when()这种情况。.when()当您的键的值依赖于同一对象中另一个键的值时,最好使用它。在您的场景中,我们只需要担心一把钥匙。
使用的可能解决方案.alternatives()可能如下所示:
Joi.object().keys({
title: Joi.alternatives(
Joi.string(),
Joi.object().keys({
en_US: Joi.string().required(),
lt_LT: Joi.string()
})
).required()
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6231 次 |
| 最近记录: |