环境:玩!2.2.3、ReactiveMongo 0.10.0-SNAPSHOT
假设我有一个包含文档列表的页面(比如说“项目”)和一个按钮,该按钮弹出一个模式对话框,其中包含要填写的字段。按下 OK 按钮后,页面向后端发送一个带有 JSON 正文的请求:
{
name: "Awesome Project",
url: "https://github.com/ab/cd",
repository: "git@github.com/ab/cd.git",
script: "empty"
}
后端将请求路由到Action
定义的对象,如下所示:
def projectsCollection: JSONCollection = db.collection[JSONCollection]("projects")
def create = Action.async(parse.json) { request =>
projectsCollection.insert(request.body) map {
case LastError(true,_,_,_,Some(doc),_,_) => Created(JsObject(List(
"result" -> JsString("OK") ,
"doc" -> BSONFormats.toJSON(doc)
)))
case LastError(false, err, code, msg, _, _, _) => NotAcceptable(JsObject(List(
"result" -> JsString("ERROR"),
"error" -> JsString(err.getOrElse("unknown")),
"code" -> JsNumber(code.getOrElse[Int](0)),
"msg" -> JsString(msg.getOrElse("no messsage"))
)))
}
}
LastError
案例类有一个在请求响应正文中返回的参数,originalDocument: Option[BSONDocument]
但它不是我期望的文档。我想要BSONObjectID
填充或至少_id
本身的文件。
试图检索新创建的文档使我陷入了死胡同,因为所有内容都包含在Future
.
如何编写完成任务的优雅代码?