DBAction(parse.json).async with play-slick

时间:2014-07-02 08:34:35

标签: asynchronous playframework-2.3 play-slick

我正在使用play-slick。我试图在播放光滑的DBaction中尝试回归未来,但我失败了:

def test = DBAction(parse.json){ implicit request =>
      scala.concurrent.Future {
        NotFound(Json.obj("error" -> "some error"))
      } 
}

[error]  found   : scala.concurrent.Future[play.api.mvc.Result]
[error]  required: play.api.mvc.Result

我如何回归这个未来? Async {}现在已经在2.3中消失了,而DBAction()。async(正如文档所说的用于正常游戏 - 未来的动作)似乎不可用。

1 个答案:

答案 0 :(得分:1)

我最近有同样的问题/问题,因为我使用Future.firstCompleteOf( DB调用超时),对我来说似乎有用的是使用DB.withSession代替。

所以我的控制器操作仍然在Action.async块中,然后我的Future看起来像

Future.firstCompleteOf(Seq(Future( 
    DB.withSession {implicit session => MyTable.findById(id) } ), timeoutFuture) ).map { 
      case Whatever => … 
}.recoverWith {
  case Whatever => … 
}