仅允许Joi架构中的键的特定值

mar*_*dok 25 javascript joi

有没有其他方法可以在Joi验证模式中为关键的期望正则表达式模式设置特定值?

我的示例架构:

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

Jib*_*ose 42

你也可以使用valid喜欢

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

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

  • 它只允许两个中的一个,我们如何才能做到两者兼而有之。 (2认同)

小智 8

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

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(),
})
Run Code Online (Sandbox Code Playgroud)

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