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

时间:2016-12-31 12:55:38

标签: node.js joi

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

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

2 个答案:

答案 0 :(得分:11)

怎么样:

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

还有别名:.allow和.only

和.disallow和.not

答案 1 :(得分:5)

您正在寻找validinvalid函数。
https://hapi.dev/family/joi/?v=16.1.5#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')的形式传递(-: