Joi 模式中的键只允许特定值

Allow only specific values for key in Joi schema

除了正则表达式模式之外,还有其他方法可以在 Joi 验证模式中为键设置特定值吗?

我的示例架构:

const schema = joi.object().keys({
    query: joi.object().keys({
        // allow only apple and banana
        id: joi.string().regex(/^(apple|banana)$/).required(),
    }).required(),
})

您也可以使用valid喜欢

const schema = joi.object().keys({
  query: joi.object().keys({
    // allow only apple and banana
    id: joi.string().valid('apple','banana').required(),
  }).required(),
})

参考:https://github.com/hapijs/joi/blob/v13.1.2/API.md#anyvalidvalue---aliases-only-equal

如果您想接受一个或多个值(苹果、香蕉或两者),您可以使用 allowhttps://joi.dev/api/?v=17.3.0#anyallowvalues

您可以尝试使用 .valid() 以仅允许使用该特定字符串进行 joi。

const schema = joi.object().keys({
  query: joi.object().keys({
    role: joi.string().valid('admin','student').required(), // joi would allow only if role is admin or student.
  }).required(),
})

这完全等同于在 mongoose ODM 中给出“enam”字段来表示 mongodb 中的对象。