27

我正在使用Joi 包进行服务器端验证。
我想检查给定的字符串是否在给定的列表中,或者它是否不在给定的列表中。(为值定义黑名单或白名单)
……比如“in”“notIn”函数。我该怎么做?

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

2 回答 2

34

您正在寻找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---别名-等于

从 Joi v16开始validinvalid不再接受数组,它们采用可变数量的参数。

你的代码变成

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

.valid('a', 'b')也可以像没有从数组中获取值一样传入(-:

于 2019-10-03T04:39:41.753 回答
27

怎么样:

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

还有别名:.allow 和 .only

和 .disallow 和 .not

于 2016-12-31T13:08:15.207 回答