我正在使用 Play Framework (2.0.4) 和 Scala,但我遇到了问题。
我调用我的后端来获取用户列表(以 json 格式),对于每个用户,我必须从后端获取额外信息(每个用户一个请求)。
所以在我的服务中,我有:
def getUsers(/*different uninteresting parameters*/ ): Promise[List[Option[User]]]
和
def getExtraUserInfo(user:User):Promise[Option[Double]]
因此,对于 getUsers 返回的每个用户,我想调用 getExtraUserInfo,并返回用户以及有关每个用户的额外信息。
所以在我的控制器中,我试图做这样的事情:
def getUsers(/*parameters*/) = AuthenticatedAsync{ request =>
val users = UserService.getUsers(/*parameters*/)
users.flatMap {
case Some(userList) =>
Ok(Success("users" -> Json.toJson(userList.flatMap{
user => UserService.getExtraUserInfo(user).map {
case Some(price) => user.price = price
user
case _ => user
}
}.map(_.json))))
case _ => InternalServerError(Error("error while getting users", Errors.TECHNICAL))
}
}
你们知道怎么做吗?(这段代码不起作用,但这就是我所做的一切......)