我是从Java开始接触Scala的,所以函数式编程对我来说还是有点难理解。我有一个项目在玩框架。我需要查询数据库以获取具有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))
}
}
getDocumentByID
返回
Future[Options[Document]]
对象,但我
results
Array[Document]
因此,我试图改变
未来〔期权〔文件〕
到
数组[文档]
我当前的代码是最接近的,但仍然无法编译。这是错误:
Error:(36, -1) Play 2 Compiler:
found : Array[scala.concurrent.Future[Option[models.Document]]]
required: M[scala.concurrent.Future[A]]