我正在使用 Play Framework 2.1.5 和 ReactiveMongo 0.9 使用 ReactiveMongo Play 插件开发一个简单的 RESTful Web 服务。自从我最后一次使用 Play Framework 已经有很长时间了。我正在尝试使用以下方法插入文档:
def create = Action(parse.json) { request =>
Async {
val coll = db.collection[JSONCollection](...)
val obj = Json.obj(
"username" -> ...,
...
)
users.insert(obj).map { err => err match {
case e if !e.ok => InternalServerError(Json.obj("result" -> 0, "error" -> e.message))
case _ => Ok(Json.obj("result" -> 1))
}}
}
}
我预计一旦查询执行失败(例如由于索引中的重复值),我会毫无问题地处理它。但它的工作方式不同 - 如果失败,则抛出 a而不是用适当的值DatabaseException
满足 the 。Promise[LastError]
请问我错过了什么?