如何允许 Joi 中的任何其他键

How to allow any other key in Joi

我有一个简单的要求。我试图在互联网上搜索以及文档但失败了。
所以这就是我想要实现的目标:

我有一个模式:

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

现在,如何配置它以便允许对象中的任何其他键?

使用此模式,它只允许两个键 ab。如果我传递任何其他键,比如 c,它会抛出一个错误,指出 c 是不允许的。

如果您想确保这些未知键是字符串,您可以使用 object.pattern(regex, schema) 添加未知键:

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

对于所有密钥类型的一般传递,使用 object.unknown(true):

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

正确答案实际上是使用object.unknown(true)

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