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

Javascript 如何允许Joi中的任何其他键,javascript,hapijs,joi,Javascript,Hapijs,Joi,我有一个简单的要求。我试图在互联网上搜索文档,但失败了 因此,以下是我想要实现的目标: 我有一个模式: const schema = Joi.object().keys({ a: Joi.string().required(), b: Joi.string().required() }); 现在,我如何配置它以允许对象中的任何其他键 使用此模式,它只允许两个键a和b。如果我传递任何其他键,例如,c,它会抛出一个错误,说明不允许使用c。如果要确保这些未知键是字符串,可以使用这种方式添加未

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

我有一个模式:

const schema = Joi.object().keys({
  a: Joi.string().required(),
  b: Joi.string().required()
});
现在,我如何配置它以允许对象中的任何其他键


使用此模式,它只允许两个键
a
b
。如果我传递任何其他键,例如,
c
,它会抛出一个错误,说明不允许使用
c

如果要确保这些未知键是字符串,可以使用这种方式添加未知键:

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

}).pattern(/。/,Joi.string())正确答案是实际使用


使用
.pattern(/./,Joi.any())
完成了这项任务。(因为也可以有嵌套对象)。谢谢可能更容易将@Niels Keurentjes的答案标记为可接受的答案会更好。这可能有效,但不应升级为goto解决方案。同样,这是更具体的allow unknown版本。此代码允许用户指定所有未知键必须是字符串。这在某些情况下非常有用,比如创建一个RESTAPI过滤器,其中所有未知的过滤器参数必须符合给定的模式。我同意,没有理由否决这个解决方案。
unknown(true)
选项将允许任何操作,但如果您只想允许特定键,则regex模式是您的朋友。简单明了的答案,nice+1:)这应该是最佳答案。
true
参数不是必需的,因为它是默认值。仅使用
.unknown()
可以获得相同的效果。我建议在编写验证方案时要清晰而不是简洁。是的,该参数不是必需的,因为它是默认的,但是显式地提供它可以防止对意图的任何可能的混淆。所选的答案实际上不是一个错误的答案。Unknown true将允许未知密钥,当然。但是,它不允许您指定未知项的类型。“正确”的答案将强制所有未知数为字符串类型。这在某些情况下非常有用。这个问题似乎得到了很多意见,所以让我澄清一下:我接受了卡斯滕的答案,因为当时,这个解决方案对我有效,我的问题在不到一个小时内得到了回答。但这可能不是你的最佳解决方案。只需向下滚动,查看Niels投票率最高的答案。尽管答案很清楚,但我不会认为它被接受,因为这会让卡斯滕付出的努力感到耻辱。
const schema = Joi.object().keys({
  a: Joi.string().required(),
  b: Joi.string().required()
}).unknown(true);