【发布时间】:2017-03-29 20:03:45
【问题描述】:
我是从 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))
}
}
getDocumentByID 返回一个Future[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]]
【问题讨论】:
标签: scala functional-programming future playframework-2.3 scala-option