Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

A classical example is:

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

This validate that object have field my_string which must have a myString as value.

How check that key my_string is not equal to notAllowedString?

like image 735
Cherry Avatar asked Oct 24 '25 15:10

Cherry


1 Answers

you can use invalid to blacklist a value (link for ref)

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

Here's a full example of how you would use it:

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(),
});
like image 178
saurabh Avatar answered Oct 27 '25 04:10

saurabh