我正在尝试处理我从光滑中获得的未来,以便生成对请求的响应,但我仍然坚持" async"一部分。
这是一个片段:
get("/tmp") {
new AsyncResult() {
override val is: Future[_] = db.run(Users.findUserWithLogin("user"))
}
}
现在,db.run调用返回Future [Option [User]]。如何根据选项的内容返回响应?
答案 0 :(得分:2)
在这种情况下,您需要将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。