如何使用Joi字符串验证限定参数为ios或android枚举值
使用Joi验证type参数仅允许ios/android的实现方案
嗨,这个需求处理起来很简单,Joi正好内置了枚举值验证的方法,直接给type字段加上专属约束就行啦。修改后的代码如下:
body: { device_key: joi.string().required(), type: joi.string().valid('ios', 'android').required() }
关键细节说明:
.valid('ios', 'android')会严格校验type的值只能是这两个字符串中的一个,默认是大小写敏感的;如果需要忽略大小写,可以追加.insensitive()方法- 当请求传入的
type不在允许范围内时,Joi会自动返回验证失败的错误,还会明确提示合法的可选值,方便前端排查问题
如果后续需要维护可选值,想让代码更易扩展,也可以用数组来管理允许的类型:
const allowedDeviceTypes = ['ios', 'android']; body: { device_key: joi.string().required(), type: joi.string().valid(...allowedDeviceTypes).required() }
这样以后要新增设备类型,直接修改allowedDeviceTypes数组就好,不用动验证规则的核心逻辑~
内容的提问来源于stack exchange,提问作者Eranga Kapukotuwa
相关产品推荐
相关产品推荐

