如何给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
相关产品推荐
相关产品推荐

