我正在嘗試根據父項中的值有條件地驗證嵌套物件。
const schema = Joi.object({
a: Joi.string(),
b: Joi.object({
c: Joi.when(Joi.ref('..a'), { is: 'foo', then: Joi.number().valid(1), otherwise: Joi.number().valid(2) }),
}),
});
const obj = {
a: 'foo',
b: {
c: 2,
},
};
在這個例子中,我想得到一個 c 必須為 1 的錯誤,但驗證通過了。我已經嘗試過參考和不參考,但我顯然對 Joi 的作業原理有一些基本的誤解。有什么幫助嗎?
uj5u.com熱心網友回復:
.您的Joi.ref()通話中還需要一個。..將上升到父樹,然后是另一個點來表示屬性。所以對于你的情況,它會去父母..那里然后得到 a 財產parent.a
使用Joi 操場這對我有用:
Joi.object({
a: Joi.string(),
b: Joi.object({
c: Joi.when(Joi.ref('...a'), {is: 'foo', then: Joi.number().valid(1), otherwise: Joi.number().valid(2)})
})
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/429176.html
標籤:javascript 节点.js 验证 乔伊
