Node.js Nodejs-Joi检查字符串是否在给定列表中

Node.js Nodejs-Joi检查字符串是否在给定列表中,node.js,joi,Node.js,Joi,我正在用于服务器端验证。我想检查给定字符串是否在给定列表中或不在给定列表中。(为值定义黑名单或白名单) 类似于“in”或“notIn”的函数。我怎么做 var schema = Joi.object().keys({ firstname: Joi.string().in(['a','b']), lastname : Joi.string().notIn(['c','d']), }); 那么: var schema = Joi.object().keys({ firstn

我正在用于服务器端验证。
我想检查给定字符串是否在给定列表中或不在给定列表中。(为值定义黑名单或白名单)
类似于“in”或“notIn”的函数。我怎么做

var schema = Joi.object().keys({
    firstname: Joi.string().in(['a','b']),
    lastname : Joi.string().notIn(['c','d']),
});
那么:

var schema = Joi.object().keys({
    firstname: Joi.string().valid(['a','b']),
    lastname : Joi.string().invalid(['c','d']),
});
还有别名:。允许和。仅限


和.disallow和.not

您正在查找
有效的
无效的
函数。
v16:
v17:

从Joi v16
valid
invalid
不再接受数组开始,它们接受的参数数量可变

您的代码变为

var schema = Joi.object().keys({
    firstname: Joi.string().valid(...['a','b']),
    lastname: Joi.string().invalid(...['c','d']),
});

如果没有从数组中获取值,也可以作为
.valid('a','b')
传入(-):

这不再有效,因为“有效”不再接受数组类型的参数这应该是可接受的答案!Robert Moskal的答案不再有效。在joi/hapi中,没有有效或无效选项:|@BadriDerakhshan:如果你说的是
@hapi/joi
,那么就没有
@hapi/joi
了!这个包得到了dep上个月改版&Joi正式回归Joi。((
@hapi/Joi
中也存在有效和无效do)-这有点令人沮丧,因为用户去年不得不从Joi切换到@hapi/Joi,一年后再次切换到Joi:-)