0
저는 플레이 프레임 워크를 사용하여 나머지 API를 작성하려는 스케이프 초보자입니다. 다음 3 가지 데이터 액세스 방법이 있습니다스칼라 플레이 프레임 워크 비동기 액션에서 선물 결합/연결
getDataDict: (dsType:String, name:String) => Future[Option[DatasetDictionary]]
getDatasetData: (DatasetDictionary) => Future[List[DatasetData]]
getMetadata: (DatasetDictionary) => Future[List[Metadata]]
내 비동기 작업 메서드의 결과를 얻으려면이 세 가지 방법을 사용해야합니다.
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