如何使用 Joi 验证一个字符串不等于另一个(黑名单)?

How to validate that a string is not equal to another (blacklist) with Joi?

一个经典的例子是:

schema = Joi.object().keys({
    my_string: Joi.string().valid("myString").required()
});

这验证对象有字段 my_string,它必须有一个 myString 作为值。

如何检查键 my_string 等于 notAllowedString

您可以使用 无效 将值列入黑名单 (link for ref)

schema = Joi.object().keys({
    my_string: Joi.string().invalid("notAllowedString").required()
});

下面是您将如何使用它的完整示例:

const Joi = require('joi');

const schema = Joi.object({
  someIntA: Joi.number().integer().min(0).required(),
  someIntB: Joi.number()
    .integer()
    .min(0)
    .invalid(Joi.ref('someIntA'))
    .required(),
  someStringA: Joi.string().alphanum().min(3).max(30).required(),
  someStringB: Joi.string()
    .alphanum()
    .min(3)
    .max(30)
    .invalid(Joi.ref('someStringA'))
    .required(),
});