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

Nodejs - Joi Check if string is in a given list

我正在使用 Joi package 进行服务器端验证。
我想检查给定字符串是否在给定列表中或不在给定列表中。(定义黑色值的列表或白名单)
"in""notIn" function.how 我可以那样做吗?

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']),
});

还有别名:.allow 和 .only

and.disallowand.not

您正在查找 validinvalid 函数。
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 开始,validinvalid 不再接受数组,它们接受可变数量的参数。

您的代码变为

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

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