首页 > 解决方案 > 实现 hapi-joi 条件模式

问题描述

我想要一个查询模式,其中如果id存在则忽略可能存在的任何其他参数。但是,如果id不存在,则应用验证条件,其中一些参数是required。换句话说,像这样

query: {
    id: Joi.number()
        .description("record id. All other query params are ignored if id is provided.")
        .integer()
        .positive()
        .optional(),

    everythingElse: {
        foo: Joi.string()
            .required(),

        bar: Joi.string()
            .required(),

        baz: Joi.string()
            .optional(),

        qux: Joi.string()
            .optional()
    }
}

以上可能吗?阅读Joi语法,似乎我必须when('id', {is: Joi.number().positive().integer(), then: Joi.optional(), otherwise: Joi.required() })在每个必需参数的定义中添加一个子句。

标签: hapijsjoi

解决方案


推荐阅读