首页 > 解决方案 > 如何使用 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())

标签: javascriptvalidationschemajoi

解决方案


得到它的工作与这个

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

见沙盒

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


推荐阅读