首页 > 解决方案 > 包含其他对象的 Joi 验证器对象

问题描述

我在 req 正文中得到了这种类型的 json:

"customerDetails": {
    "contact": {
        "firstName": "",
        "lastName": "",
    },
    "address": {
        "addressSFID": "",
        "cityAddress": "",
    }

我试图使用这个模式:

customerDetails: Joi.object({
    contact: Joi.object({
        firstName: validateName(),
        lastName: validateName(),
    }),
    address: Joi.object({
        addressSFID: validateSfid(),
        cityAddress: validateGeneralAddressDetail(),
    })
}),

但它不起作用。没有抛出错误,但它没有按应有的方式验证字段

当它是两个独立的对象(里面的两个customerDetails

我应该使用什么语法?

标签: javascriptnode.jsjsonjoi

解决方案


如果您正在编写一次架构,那么您不需要使用.keys(). (keys)在像这样向对象添加更多行时使用 .keys() :

Joi.object().keys({
  contact:Joi.object().keys({
        "firstName":Joi.string(),
        "lastName": Joi.string()
  }),
   address:Joi.object().keys({
        "addressSFID":Joi.string(),
        "cityAddress": Joi.string()
  })
})

推荐阅读