[英]Type mismatch mapping Future[Seq[model]] using Play with Scala
有時我仍然很難使用Play with Scala來映射Future ...
我試圖將我的整個Supply DB表(即數據庫中的所有耗材)傳遞給視圖。
我嘗試了兩種不同的方法,但是都失敗了...
以下是我嘗試過的方法和遇到的錯誤。
有人可以幫我解決這個問題,並向我解釋為什么兩者都失敗了嗎?
先感謝您!
注意:調用supplyService.all
返回Future[Seq[Supply]]
。
第一次嘗試
def index = SecuredAction.async { implicit request =>
supplyService.all map { supplies =>
Future.successful(Ok(views.html.supplies.index(request.identity, SupplyForm.form, supplies)))
}
}
第二次嘗試
def index = SecuredAction.async { implicit request =>
val supplies = supplyService.all
Future.successful(Ok(views.html.supplies.index(request.identity, SupplyForm.form, supplies)))
}
沒有Future.succesfull
第一個變體
supplyService.all.map( supplies => Ok(views.html.supplies.index(request.identity, SupplyForm.form, supplies)) )
由於您可以構造函數Seq[Supply] => Result
,因此可以通過函子接口輕松map
Future[Seq[Supply]]
map
到Future[Result]
。
Future也是monad ,因此您可以通過flatMap
方法使用Seq[Supply] => Future[Result]
。
但是Future.successfull
是monad單位,對於Future
許多monad來說,
mx.flatMap(f andThen unit) = mx.map(f)
所以你
ms.flatMap(supplies => Future.successfull(f(supplies)) =
ms.flatMap(f andThen Future.successfull) =
ms.map(f)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.