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

如何给Joi.valid()传入有效值数组验证req.body指定字段?

Joi验证updateField为指定数组项的实现方式

你要实现的updateField必须是personParams数组中某一项的验证逻辑,Joi本身就支持,只是你的代码写法需要调整——.valid()方法在Joi v16及以上版本可以直接接受数组作为参数,低版本则需要用扩展运算符展开数组元素。

正确实现示例

首先定义你的参数数组:

const personParams = ['age', 'email', 'address', 'phone']; // 替换成你的实际参数列表

方式1:适用于Joi v16+

直接将数组传入.valid():

const updatePersonSchema = Joi.object({
    personName: Joi.string().min(2).required(),
    updateField: Joi.string().valid(personParams).required(),
    value: Joi.required()
});

方式2:兼容所有Joi版本

用扩展运算符...展开数组元素,作为.valid()的多个参数:

const updatePersonSchema = Joi.object({
    personName: Joi.string().min(2).required(),
    updateField: Joi.string().valid(...personParams).required(),
    value: Joi.required()
});

验证时,只要updateField的值不在personParams数组内,Joi就会返回对应的验证错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:15:34