You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Joi不对Schema对象中未定义的字段执行校验?

解决方案

Joi 的对象校验默认禁止传入未在 Schema 中定义的未知字段,你只需要在定义 Schema 时添加 .unknown(true) 配置即可放开该限制:

const schemaInsercao = Joi.object({
    nome: Joi.string()
        .min(3)
        .max(255)
        .required()
    ,
    ativo: Joi.string()
        .max(1)
        .required()
        .valid('S', 'N')
    ,
    descricao: Joi.string()
        .max(255)
        .required()
}).unknown(true); // 新增这一行配置

配置说明

  • .unknown(true) 表示允许对象包含未在 Schema 中声明的字段,这类字段不会触发校验规则,会直接保留在校验结果中
  • 如果你希望所有的 Joi Schema 都默认允许未知字段,可以全局配置默认规则:
// 初始化Joi时配置全局默认规则
const Joi = require('joi').defaults(schema => schema.options({ allowUnknown: true }));

配置完成后你传入带teste字段的请求就不会再触发"teste" is not allowed的报错,已定义的nome、ativo、descricao三个字段仍会按原有规则正常校验。

内容的提问来源于stack exchange,提问作者Ronnei Peterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:06:08