2017-08-23 51 views
0

我有以下代碼:階返回未來[單位]代替未來[ContentComponentModel]

def getContentComponents: Action[AnyContent] = Action.async { 
     val test = contentComponentDTO.list().map { contentComponentsFuture => 
      contentComponentsFuture.foreach(contentComponentFuture => 

      contentComponentFuture.typeOf match { 
       case 1 => 
       println("blubb") 
       case 5 => 
       contentComponentDTO.getContentComponentText(contentComponentFuture.id.get).map(
        text => { 
        contentComponentFuture.text = text.text 
        println(text.text) 
        println(contentComponentFuture.text) 
        } 
       ) 
      } 
     ) 

     } 

    Future.successful(Ok(Json.obj("contentComponents" -> test))) 

    } 

和我得到這個錯誤消息:

enter image description here

的.LIST()方法應該回到未來[ContentComponentModel]

def list(): Future[Seq[ContentComponentModel]] = db.run {

在這種情況下我的錯誤是什麼?

感謝

+0

嘗試將顯式類型添加到'val' – cchantep

+0

'VAL測試:未來[序列[ContentComponentModel] = contentComponentDTO.list() .map {...}''說'單元類型的表達式不符合期望的類型S_' – Felix

+0

這是正確的,因爲case 1 => println(...)是單元,case 5 '未來[單位]'或'單位'。真的會建議看看Scala教程。 – cchantep

回答

1

你contentComponentsFuture應該是類型序號[ContentComponentModel]的。在這種情況下,你應該循環後移至

Future.successful(Ok(Json.obj("contentComponents" -> test))) 

剛剛進入映射表達式(這是異步)。

它應該看起來像:

def getContentComponents: Action[AnyContent] = Action.async { 
val test = contentComponentDTO.list().map { contentComponents => 
    contentComponents.foreach(contentComponentFuture => 
    contentComponentFuture.typeOf match { 
     case 1 => 
     println("blubb") 
     case 5 => 
     contentComponentDTO.getContentComponentText(contentComponentFuture.id.get).map(
      text => { 
      contentComponentFuture.text = text.text 
      println(text.text) 
      println(contentComponentFuture.text) 
      } 
     ) 
    } 
) 
    Future.successful(Ok(Json.obj("contentComponents" -> contentComponents))) 
} 

}

+1

嘗試刪除動作[AnyContent],因爲你不需要它。如果它不工作,請嘗試返回「Future(Ok ....」)或甚至「Ok(Json.obj(....)」) – Gazeciarz