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方法应该知道发生了什么样的问题,并返回带有错误消息的问题结果。