【问题标题】:Nested requests with Scala and play Framework使用 Scala 和 play 框架的嵌套请求
【发布时间】:2013-07-12 13:52:38
【问题描述】:

我正在使用 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))
}
}

你们知道怎么做吗? (这段代码不起作用,但这就是我所做的一切......)

【问题讨论】:

    标签: asynchronous playframework-2.0 scala-2.10


    【解决方案1】:

    尝试Promise.sequence 对承诺列表进行排序。 Promise.sequence 将 List[Promise[T]] 转换为 Promise[List[T]]...

    见the Play! Scala API here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 2018-12-20
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 2012-02-20
      相关资源
      最近更新 更多