Joi 将枚举验证为地图中的键

Joi validate on enums as keys in a map

我有一个用字符串表示的枚举列表

export const constKeys = [
  'A',
  'B',
  'C',
  ...
];

并且我想使用 Joi 来验证 Immutable.js 地图是否具有来自 constKeys 的键和数字值。看起来我可以做类似

的事情
const myMapValidator = Joi.object().keys({
    A: Joi.number(),
    B: Joi.number(),
    C: Joi.number(),
});

但是如果 constKeys 真的很长,这种方法就不会很好地工作。有没有办法让 Joi 知道密钥必须来自 constKeys 并且值是数字?

我明白了。您可以使用 mapValues 来自 lodash

const myMapValidator = Joi.object().keys(mapValues(constKeys, () => Joi.number()))