处理 Play 2.5 和 ReactiveMongo 中的更新失败
Handling update failure in Play 2.5 and ReactiveMongo
我已经编写了简单的 rest API,它将向 mongodb 添加音乐曲目数据。
我能够成功写入轨道,但是我想处理错误情况。
我的代码如下-
def saveTrack = Action.async(parse.json) {
import model.Track.trackFormat
implicit request =>
request.body.validate[Track].map { data =>
trackService.save(data).onComplete {
case Success(value) => Ok(Json.obj("message" -> Messages("track.save.ack")))
case Failure(e) => Ok(Json.obj("message" -> Messages("track.save.nack")))
}
}
Future.successful(Ok(Json.obj("message" -> Messages("track.save.fin"))))
}
假设 trackService.save(data) 中发生了一些故障,然后我想要 return 错误代码。我想知道如何实现。
谢谢
比利
def saveTrack = Action.async(parse.json) { implicit request =>
request
.body
.validate[Track]
.map { data =>
trackService.save(data).map { v =>
Ok(Json.toJson(Json.obj("message" -> Messages("ack"))))
}.recover {
case _ =>
Ok(Json.toJson(Json.obj("message" -> Messages("nack"))))
}
}.getOrElse {Future.successful(BadRequest(Json.obj("error" -> "bad json")))
}
}
使用 recover
处理错误,getOrElse
以防 json 主体与您的模型不匹配。
我已经编写了简单的 rest API,它将向 mongodb 添加音乐曲目数据。
我能够成功写入轨道,但是我想处理错误情况。
我的代码如下-
def saveTrack = Action.async(parse.json) {
import model.Track.trackFormat
implicit request =>
request.body.validate[Track].map { data =>
trackService.save(data).onComplete {
case Success(value) => Ok(Json.obj("message" -> Messages("track.save.ack")))
case Failure(e) => Ok(Json.obj("message" -> Messages("track.save.nack")))
}
}
Future.successful(Ok(Json.obj("message" -> Messages("track.save.fin"))))
}
假设 trackService.save(data) 中发生了一些故障,然后我想要 return 错误代码。我想知道如何实现。
谢谢 比利
def saveTrack = Action.async(parse.json) { implicit request =>
request
.body
.validate[Track]
.map { data =>
trackService.save(data).map { v =>
Ok(Json.toJson(Json.obj("message" -> Messages("ack"))))
}.recover {
case _ =>
Ok(Json.toJson(Json.obj("message" -> Messages("nack"))))
}
}.getOrElse {Future.successful(BadRequest(Json.obj("error" -> "bad json")))
}
}
使用 recover
处理错误,getOrElse
以防 json 主体与您的模型不匹配。