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
如果您想接受一个或多个值(苹果、香蕉或两者),您可以使用 allow
:https://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 中的对象。
除了正则表达式模式之外,还有其他方法可以在 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
如果您想接受一个或多个值(苹果、香蕉或两者),您可以使用 allow
:https://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 中的对象。