How to allow any other key in Joi

Anand Undavia picture Anand Undavia · Apr 18, 2018 · Viewed 19.4k times · Source

I have a simple requirement. I tried to search on the internet as well as documentation but failed.
So here is what I want to achieve:

I have a schema:

const schema = Joi.object().keys({
  a: Joi.string().required(),
  b: Joi.string().required()
});

Now, How do I configure it such that any other key in the object would be allowed?

With this schema, it only allows two keys a and b. If I pass any other key, say, c, it throws an error saying that c is not allowed.

Answer

Niels Keurentjes picture Niels Keurentjes · May 11, 2018

The correct answer is actually to use object.unknown(true).

const schema = Joi.object().keys({
  a: Joi.string().required(),
  b: Joi.string().required()
}).unknown(true);