Nodejs - Joi 检查字符串是不是在给定列表中
Posted
技术标签:
【中文标题】Nodejs - Joi 检查字符串是不是在给定列表中【英文标题】:Nodejs - Joi Check if string is in a given listNodejs - Joi 检查字符串是否在给定列表中 【发布时间】:2017-05-15 11:26:40 【问题描述】:我使用Joi package 进行服务器端验证。我想检查给定字符串是否在给定列表中或不在给定列表中。(为值定义黑名单或白名单) sth like an "in" or "notIn" function.我该怎么做?
var schema = Joi.object().keys(
firstname: Joi.string().in(['a','b']),
lastname : Joi.string().notIn(['c','d']),
);
【问题讨论】:
【参考方案1】:您正在寻找valid
和invalid
函数。
v16:https://hapi.dev/module/joi/api/?v=16.1.8#anyvalidvalues---aliases-equal
v17:https://hapi.dev/module/joi/api/?v=17.1.1#anyvalidvalues---aliases-equal
从 Joi v16 开始,valid
和 invalid
不再接受数组,它们采用可变数量的参数。
你的代码变成了
var schema = Joi.object().keys(
firstname: Joi.string().valid(...['a','b']),
lastname: Joi.string().invalid(...['c','d']),
);
如果没有从数组中获取值,也可以直接作为 .valid('a', 'b')
传入 (-:
【讨论】:
在 joi/hapi 中没有有效或无效的选项:| @BadriDerakhshan:如果你说的是@hapi/joi
,那么就没有@hapi/joi
了!该软件包上个月已弃用,Joi 正式回归 Joi。 (npmjs.com/package/@hapi/joi)(@hapi/joi
中也存在有效和无效)- 这有点令人沮丧,因为去年用户必须从 Joi 切换到 @hapi/joi 并在一年内再次回到 Joi :-)跨度>
【参考方案2】:
怎么样:
var schema = Joi.object().keys(
firstname: Joi.string().valid(['a','b']),
lastname : Joi.string().invalid(['c','d']),
);
还有别名:.allow 和 .only
和 .disallow 和 .not
【讨论】:
这不再起作用,因为“有效”不再接受数组类型的参数以上是关于Nodejs - Joi 检查字符串是不是在给定列表中的主要内容,如果未能解决你的问题,请参考以下文章
在 PostgreSQL 函数中,是不是可以检查列值是不是与给定参数值匹配?