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
是否可以将字符串传递给 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