1
在Scala Play和Slick中,我只希望在數據庫中創建一條記錄後發送OK響應,到目前爲止我得到了:在Scala Play和Slick中,如何在發送回覆之前完成請求
def createItem = Action(BodyParsers.parse.json) {
request => {
val result = request.body.validate[Item]
result.fold(
invalid => {
val problem = new Problem(BAD_REQUEST, "Invalid Item JSON", invalid.toString)
returnProblemResult(BadRequest, problem)
},
item => {
service.create(item)
// TODO check for success before sending ok
Ok.as(ContentTypes("DEFAULT"))
}
)
}
}
而且service.create方法中:
def create(item: Item): Future[Unit] = {
exists(item.id).map {
case true =>
case _ => db.run(Item.table += cc)
}
}
目前,即使不創建新項目OK響應被髮送。如果創建了一個項目,我希望它只返回OK。如果該項目已經存在,或者如果有其他錯誤(例如數據庫錯誤),則createItem方法應該知道發生了什麼樣的問題,並返回帶有錯誤消息的問題結果。