Joi嵌套模式

Ans*_*hul 14 javascript node.js joi

我试图在joi中创建嵌套模式,它抛出错误

[错误:对象架构不能是一个joi架构]

var nestedSchema = joi.object({
    b: joi.number()
});

var base = joi.object({
    a: joi.string(),
    nestedData:joi.object(nestedSchema)
});
Run Code Online (Sandbox Code Playgroud)

我应该如何在joi中定义嵌套模式?

Túb*_*tín 22

尽管Francesco的答案有效,但没有必要使用object.keys().问题创建者所做的错误是将模式作为参数传递给joi.object().

因此,创建嵌套模式就像将模式分配给属于另一个模式的密钥一样简单.

const schemaA = Joi.string()
const schemaB = Joi.object({ keyB1: schemaA, keyB2: Joi.number() })
const schemaC = Joi.object({
  keyC1: Joi.string(),
  keyC2: schemaB  
})

Joi.validate({ keyC1: 'joi', keyC2: { keyB1: 'rocks!', keyB2: 3 } }, schemaC)
Run Code Online (Sandbox Code Playgroud)


Fra*_*lla 14

您可以使用object.keys API

var nestedSchema = joi.object().keys({
    b: joi.number()
});

var base = joi.object({
    a: joi.string(),
    nestedData: nestedSchema
});
Run Code Online (Sandbox Code Playgroud)