(1)DBから値を取得しようとするAction.asyncが必要です。 DBが利用できない場合、別のリソースに接続しようとし、(2)そこから値を取得します。私が使用している2つのリソースがFutureを返すので、私は "recover"キーワードでそれらを分離しています。私はそれが最善の方法であるかどうかわからないです.....しかし、回復{}内の文は、型の不一致エラーがあります。scala.concurrent.Future [play.api.mvc.Result] required:play.api.mvc.Result
def show(url: String) = Action.async { implicit request: Request[AnyContent] =>
println("url: " + url)
val repositoryUrl = RepositoryUrl(url)
val repositoryId = RepositoryId.createFromUrl(url)
// Listing commits from the DB
val f: Future[Seq[Commit]] = commit.listByRepository(repositoryId.toString())
f.map { f: Seq[Commit] =>
val json = JsObject(Seq(
"project URL" -> JsString(url),
"list of commits" -> Json.toJson(f)))
Ok(json)
}.recover {
case e: scala.concurrent.TimeoutException =>
// InternalServerError("timeout")
// Listing commits from the Git CLI
val github = rules.GitHub(repositoryUrl)
val seq: Future[Seq[Commit]] = github.listCommits
seq.map { seq: Seq[Commit] =>
val json = JsObject(Seq(
"project URL" -> JsString(url),
"list of commits" -> Json.toJson(seq)))
Ok(json)
}
}
}
私はラインseq.map { seq: Seq[Commit] =>
にエラーtype mismatch; found : scala.concurrent.Future[play.api.mvc.Result] required: play.api.mvc.Result
を取得しています。私の未来から失敗した場合、どうすれば別の結果を返すことができますか?
ありがとうございます!