MongoController.serve的匹配结果

时间:2015-06-17 06:05:55

标签: scala playframework pattern-matching gridfs play-reactivemongo

MongoController提供服务函数来提供查询结果(作为Cursor)。我只是想做一些不同于让服务返回NotFound的东西,比如发送一些其他默认文件。 我想知道是否可以使用模式匹配来检查结果。签名是这样的:

/** Returns a future Result that serves the first matched file, or NotFound. */
  def serve[T <: ReadFile[_ <: BSONValue], Structure, Reader[_], Writer[_]](gfs: GridFS[Structure, Reader, Writer], foundFile: Cursor[T], dispositionMode: String = CONTENT_DISPOSITION_ATTACHMENT)(implicit ec: ExecutionContext): Future[SimpleResult] = {

2 个答案:

答案 0 :(得分:1)

在您的动作功能中,您可以:

serve(...).flatMap(serveSuccess => aCustomFutureRes).recoverWith { case error => aFutureResOnFailure }

答案 1 :(得分:0)

最后,找到了这个解决方案:

serve(
  gridFS, 
  gridFS.find(query),
  CONTENT_DISPOSITION_INLINE)
.flatMap{ result => 
  result match {
    case NotFound => // Handle file not found
    case _ => Future.successful(result)
  }
}