【问题标题】:How can I use Joi to validate an object with unknown keys and check that the values are scalar types?如何使用 Joi 验证具有未知键的对象并检查值是否为标量类型?
【发布时间】:2021-02-22 08:49:38
【问题描述】:

我有一个我无法提前确定其键的对象。如何使用 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())

【问题讨论】:

    标签: javascript validation schema joi


    【解决方案1】:

    得到它的工作与此

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

    查看沙盒

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

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 2021-10-10
      • 2019-12-13
      • 2017-08-05
      • 2020-02-20
      • 2015-10-19
      • 2020-02-20
      • 2022-11-25
      • 2018-01-13
      相关资源
      最近更新 更多