我需要使用akka-http和reactivemongo编写简单的Web服务。
保存数据的函数如下:
def saveRoute(route: Route):Future[WriteResult] = {
collection.insert(route)
}
一个调用这个函数的代码看起来像这样:
val userRoutes = {
logRequestResult("akka-http-microservice") {
path("routes") {
(post & entity(as[Route])) { route =>
Database.saveRoute(route)
}
}
}
}
我需要返回插入路由ID的结果,并且不需要让线程等待。如果尝试
Database.saveRoute(route).onComplete{
case Success(r) => complete(r.toString)
case Failure(e) => complete(e.getMessage)
}
不能编译,因为它没有返回值。我知道怎么用不规范的方式解决,但真正想以适当的方式解决。
在这种情况下应该怎么办?
Promise
并将值放入success
。 - sebszyller