如何在 Joi 字符串验证中使用枚举值

新手上路,请多包涵

我正在为我的 HTTP 请求使用 Joi 验证器。我有一个名为 type 的参数。我需要确保参数的可能值是“ios”或“android”。

我怎样才能做到这一点?

 body : {
  device_key : joi.string().required(),
  type : joi.string().required()
}

原文由 Eranga Kapukotuwa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

您可以使用 valid

 const schema = Joi.object().keys({
  type: Joi.string().valid('ios', 'android'),
});

const myObj = { type: 'none' };
const result = Joi.validate(myObj, schema);
console.log(result);

这给出了一个错误 ValidationError: child "type" fails because ["type" must be one of [ios, android]]

原文由 AbhinavD 发布,翻译遵循 CC BY-SA 4.0 许可协议

也许它对任何想要根据现有枚举/值数组检查值的人都有用。

 const SomeEnumType = { TypeA: 'A', TypeB: 'B' };

然后就用这个:

 const schema = Joi.object().keys({
  type: Joi.string().valid(...Object.values(SomeEnumType)),
});

const myObj = { type: 'none' };
const result = Joi.validate(myObj, schema);

原文由 Max Podriezov 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题