0
私は、プレイフレームワークを使用してレストアピを書こうとしているスカラ初心者です。私は次の3つのデータアクセス方法を持っていますスカラプレイフレームワークの非同期アクションでの先物の結合/連鎖
getDataDict: (dsType:String, name:String) => Future[Option[DatasetDictionary]]
getDatasetData: (DatasetDictionary) => Future[List[DatasetData]]
getMetadata: (DatasetDictionary) => Future[List[Metadata]]
私の非同期アクションメソッドの結果を得るには、これらの3つのメソッドを使用する必要があります。
def index(dstype:String, name:String, metadata:Option[Boolean]) = Action.async{
/*
1. val result = getDataDict(type, name)
2. If result is Some(d) call getDatasetData
3.1 if metadata = Some(true)
call getMetadata function
return Ok((dict, result, metadata))
3.2 if metadata is None or Some(false)
return Ok(result)
4. If result is None
return BadRequest("Dataset not found")
*/
}
私は、メタデータの一部の作業を取得する方法にこだわっている
def index1(dsType:String, dsName: String, metadata:Option[Boolean]) = Action.async {
getDataDict(dsType, dsName) flatMap {
case Some(x) => getDatasetData(x) map (x => Ok(Json.toJson(x)))
case None => Future.successful(BadRequest("Dataset not found"))
}
}
を次のように作業手順1と2を得ました。
".flatMap"を使うか、for-comprehension – cchantep