簡體   English   中英

使用Play with Scala類型不匹配映射Future [Seq [model]]

[英]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]] mapFuture[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM