播放框架错误:类型不匹配 - 发现 scala.concurrent.Future[play.api.mvc.Result] 需要:play.api.mvc.Result

尤金妮娅·奥兹娜

我在 play-scala 项目的控制器中有以下代码。

def removeItemFromShoppingBag: Action[JsValue] = Action(parse.json) {
    implicit request =>
      request.body.validate[RemoveItem]
       .fold(
         errors =>
            BadRequest(Json.obj("status" -> "KO", "message" -> JsError.toJson(errors))),
         removeItem => {
           productService.retrieve(removeItem.itemID).flatMap {
             case Some(item) => productInTheBagService.retrieve(item.id).flatMap {
               case Some(itemInTheBag) =>
                 Future.successful(
                   Ok(ApiResponse("shopping.products", Messages("request.ok")))
                 )
               case None =>
                 Future.successful(
                   BadRequest(ApiResponse("home.shopping.item.not.available",
                      Messages("shopping.item.not.available")))
          )
        }

        case None =>
          Future.successful(
            BadRequest(ApiResponse("home.shopping.item.not.available",
              Messages("shopping.item.not.available")))
          )
        }
      }
    )
   }

编译时出现以下错误:

Controller.scala:236:62: type mismatch;
[error]  found   : scala.concurrent.Future[play.api.mvc.Result]
[error]  required: play.api.mvc.Result
[error]           productService.retrieve(removeItem.itemID).flatMap {
[error]                                                              ^
[error] one error found

我已经阅读了类似这样一个问题的答案:Playframework: Type mismatch found scala.concurrent.Future[play.api.mvc.Result] required: play.api.mvc.Result但它没有帮助。

我将非常感谢任何帮助。

舒尼斯

您需要Action.async(parse.json)返回一个Future.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档