scala - 有没有更好的方法来过滤未来
问题描述
所以我想在 play-framework 中编写简单的登录逻辑。密码检查看起来像这样
...
.filter(user => BCrypt.checkpw(req.password, user.password))
...
它工作没问题。但是当密码不正确时,我得到了异常:
Future.filter predicate is not satisfied
但是,我想抛出自己的异常,所以我这样做了:
...
.map(user =>
if (!BCrypt.checkpw(req.password, user.password)) {
throw WrongCredentials()}
else user)
...
哪个有效,但我一直想知道是否有更清洁的方法。
解决方案
您可以执行以下操作(来自官方文档):
val purchase: Future[Int] = rateQuote map {
quote => connection.buy(amount, quote)
} recover {
case QuoteChangedException() => 0
}
推荐阅读
- stripe-payments - 充值卡多次
- selenium - 有没有办法在 css 选择器 selenuim 中加入条件
- javascript - 如何以角度形式构建接口
- javascript - 当有人关闭它时如何立即自动运行电子窗口应用程序?
- c# - 使用 Stripe 和 ASP.NET WebForm 的示例结帐
- c++ - 我是否也应该包含 string.h 即使它存在于头文件中?
- angular - 在 const angular 上创建泛型类型
- r - (列表)对象不能被强制在 r 中键入“整数”
- reactjs - 如何在 Next.js 中使用 MongoDB Stitch
- angular - 如何在 Angular 中使用 forloop