3

私は Java から Scala に慣れていないので、関数型プログラミングのことを理解するのはまだ少し難しいです。Play フレームワークにプロジェクトがあります。データベースにクエリを実行して、ID を持つ行を取得し、それらを html テンプレートに表示する必要があります。

これが私のコードです

 def search(query: String) = Action.async{ request =>
    val result = SearchEngine.searchResult(query)
    val docs = result.map(DocumentService.getDocumentByID(_).map(doc => doc))
    val futures = Future.sequence(docs)
    futures.map{documents =>
      Ok(views.html.results(documents.flatten))
    }
  }  

getDocumentByIDFuture[Options[Document]]オブジェクトを返しますが、私のresultsテンプレートは取るArray[Document]ので、に変換するのに役に立たなかっFuture[Options[Document]]Array[Document]

私が持っている現在のコードは私が行った中で最も近いものですが、それでもコンパイルされません。これはエラーです:

Error:(36, -1) Play 2 Compiler: 
    found   : Array[scala.concurrent.Future[Option[models.Document]]]
    required: M[scala.concurrent.Future[A]]
4

1 に答える 1