【发布时间】:2019-08-13 04:00:11
【问题描述】:
您好,我正在尝试从后端微服务的数据库中获取一些项目,并将这些项目传递给我的前端微服务以显示它们。我正在努力将这些项目从 Future 中取出,然后在我的 Action 方法中执行 Ok(Json.toJson(items)) 以便前端调用。
获取数据库中的所有项目:(在我的数据库连接器中)
def getProducts(): Future[List[MusicProduct]] =
musicDB.flatMap(_.collection("products")
.find(Json.obj())
.cursor[MusicProduct]()
.collect[List](-1, Cursor.FailOnError[List[MusicProduct]]()))
前端调用的控制器动作方法:
def getProducts: Action[AnyContent] = Action { implicit request ⇒
val products: Option[List[MusicProduct]] = productDBConnector.getProducts.map {
products =>
if (products.nonEmpty) {
Some(products)
} else {
None
}
}
products.fold(InternalServerError)(prods => Ok(Json.toJson(prods)))
}
这会返回类型不匹配错误,因为 val 产品仍然是 Future。我如何摆脱未来,非常感谢
【问题讨论】:
标签: scala playframework