swift - Validatable 模型的自定义验证错误消息
问题描述
是否可以为内置Validatable
协议提供自定义验证错误消息?
我有这个验证:
static func validations() throws -> Validations<NewsletterListItem> {
var validations = Validations(NewsletterListItem.self)
validations.add(\.email, at: ["email"], .email)
return validations
}
它产生以下消息:
{ "error": true, "reason": "duplicate key value violates unique constraint \"uq:newsletter_list.email\"" }
...我想改进。
解决方案
事实证明,Validatable
这只添加了约束,但并没有验证它们本身。因此,您需要捕获错误,检查它是什么错误,然后返回/抛出所需的响应消息,而不是提供Validatable
错误消息。这样做的一个好地方是.save()
调用模型:
以下示例位于以下路由处理程序中POST /subscribe-to-newsletter
:
return try item.save(on: req).catchMap { error in
if error.localizedDescription.contains("uq:newsletter_list.email") {
throw Abort(.ok, reason: "You're already subscribed to newsletter")
}
throw Abort(.badRequest, reason: "error: \(error.localizedDescription)")
}
推荐阅读
- html - 移动设备顶部的不同空间 - 如何修复?
- powerbi - 需要在切片器 power bi 中基于日期的选择显示上个月 MTD
- react-native - React Native - 有没有最好的方法给每个按钮的样式“borderRadius”?
- php - 使用 PHP 从输入中确定类型值
- tensorflow2.x - TensorFlow:“NotImplementedError:子类化 `Model` 类时,您应该实现 `call` 方法。”
- node.js - 如何终止我的功能,它正在工作但永无止境
- python - 类型错误:使用 async with 代替
- reactjs - 在useEffect中的另一个firestore输出中使用它之前如何获取firestore输出
- html - 显示时如何根据Angular中的对象属性更改背景颜色
- powershell - PowerShell 相当于 Bash 中的“cut -c”