在 slick 和 scalatra 中使用 futures
Working with futures in slick and scalatra
我正在尝试处理我从 slick 获得的未来,以便生成对请求的响应,但我被困在 "async" 部分。
这是一个片段:
get("/tmp") {
new AsyncResult() {
override val is: Future[_] = db.run(Users.findUserWithLogin("user"))
}
}
现在,db.run 调用 returns 一个 Future[Option[User]]。我如何 returns 根据选项的内容进行响应?
在这种情况下,您需要将 Slick 返回的未来映射到您想要的结果,而不是直接将 is
设置为 Slick 结果。因此,以下是您可能如何处理它的示例:
get("/tmp") {
new AsyncResult() {
val is = db.run(Users.findUserWithLogin("user")) map {
case Some(u) => //return some stuff about the user
case None => //return some stuff about user not being found
}
}
}
如以下评论所述,AsyncResult
并非绝对必要。您可以在 Scalatra documentation.
中找到更多详细信息
我正在尝试处理我从 slick 获得的未来,以便生成对请求的响应,但我被困在 "async" 部分。
这是一个片段:
get("/tmp") {
new AsyncResult() {
override val is: Future[_] = db.run(Users.findUserWithLogin("user"))
}
}
现在,db.run 调用 returns 一个 Future[Option[User]]。我如何 returns 根据选项的内容进行响应?
在这种情况下,您需要将 Slick 返回的未来映射到您想要的结果,而不是直接将 is
设置为 Slick 结果。因此,以下是您可能如何处理它的示例:
get("/tmp") {
new AsyncResult() {
val is = db.run(Users.findUserWithLogin("user")) map {
case Some(u) => //return some stuff about the user
case None => //return some stuff about user not being found
}
}
}
如以下评论所述,AsyncResult
并非绝对必要。您可以在 Scalatra documentation.