Hapi/Joi 验证:如何将文本处理为特定格式

Hapi/Joi Validation: How to process text to a specific format

是否可以将字符串传递给 hapi/joi 并由其处理并 return 所需的格式?例如考虑下面的代码:

const acceptedCitiesSchema = Joi.object({
    isCapitalCity: Joi.boolean().default(true),
    cityName: Joi.string().valid('MyCity', 'YourCity').required(),
})

我怎样才能做到即使用户输入'myCity''yourCity'joi也会自动将它们转换为第一个单词大写的格式('MyCity''YourCity'分别)。 return 是想要的结果吗?是否可以使用 hapi/joi 实现此目的?

您可以尝试以下方法:

const schema = Joi.object({
    isCapitalCity: Joi.boolean().default(true),
    cityName: Joi.string().valid('MyCity', 'YourCity').insensitive().required()
})

在使用模式验证时,您可以使用 convert:true 选项作为:

schema.validate({"cityName": "myCity"}, {"convert": true})

或者,您可以直接提供额外的首选项来转换模式中的 Joi 验证对象:

const schema = Joi.object({
    isCapitalCity: Joi.boolean().default(true),
    cityName: Joi.string().valid('MyCity', 'YourCity').insensitive().prefs({convert:true}).required()
})

这是一个 link 工作示例:https://repl.it/repls/HarmfulEvenPhases