【发布时间】:2018-06-04 13:56:16
【问题描述】:
我是一个尝试使用 play 框架编写 Rest Api 的 scala 新手。我有以下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")
*/
}
我的步骤 1 和 2 工作如下
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"))
}
}
我不知道如何让元数据部分正常工作。
【问题讨论】:
-
要么使用
.flatMap继续,要么用于理解
标签: scala playframework playframework-2.0 future