2016-03-06 95 views
0

我試圖處理我從浮油中獲得的未來,以便生成對請求的響應,但我被困在「異步」部分。在浮油和斯卡拉特拉期貨中工作

這裏是一個片段:

get("/tmp") { 
    new AsyncResult() { 
    override val is: Future[_] = db.run(Users.findUserWithLogin("user")) 
    } 
} 

現在,db.run調用返回一個Future [選項[用戶]。我如何根據選項的內容返回響應?

回答

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找到更多的細節。

+1

這和'AsyncResult'不是[絕對必要的](http://www.scalatra.org/2.4/guides/async/akka.html#toc_173)。 – Esardes

+0

@埃斯德斯感謝您的評論。我將編輯要添加的答案。 – DemetriKots