如何使用Joi验证具有未知键的对象并检查值是否为标量类型?

问题描述

我有一个对象,我无法提前确定其键。如何使用Joi为值强制使用特定类型(标量类型)?

具有未知键的示例对象:

const obj = {
  x: "foo",y: 7,z: true,p: { m: 1,n: false },q: [ "a","b","c" ]
}

由于我只想接受scalar类型,这意味着键pq会导致验证失败。

如何用Joi做到这一点?

到目前为止,我已经尝试过此方法,但是它允许使用非标量值,例如['a','b','c']

Joi.object().pattern(Joi.string(),Joi.boolean(),Joi.number())

解决方法

可以使用它

const validationSchema = Joi.object().pattern(
  Joi.string(),Joi.alternatives().try(Joi.number(),Joi.string(),Joi.boolean())
);

请参阅沙箱

https://codesandbox.io/s/jovial-paper-hqiun