首页 > 解决方案 > 如何查看已写入的文档数量并正确处理错误?

问题描述

文档中我可以看到我应该能够使用WriteResult.okWriteResult.code并且WriteResult.n为了了解错误和更新文档的数量,但这不起作用。这是我正在做的一个示例(使用 reactiveMongoDB/Play JSON Collection Plugin):

   def updateOne(collName: String, id: BSONObjectID, q: Option[String] = None) = Action.async(parse.json) { implicit request: Request[JsValue] =>

     val doc = request.body.as[JsObject]
     val idQueryJso = Json.obj("_id" -> id)
     val query = q match {
         case Some(_) => idQueryJso.deepMerge(Json.parse(q.get).as[JsObject])
         case None => idQueryJso
     }

     mongoRepo.update(collName)(query, doc, manyBool = false).map(result => writeResultStatus(result))
   }

   def writeResultStatus(writeResult: WriteResult): Result = {

     // NOT WORKING
     if(writeResult.ok) {
       if(writeResult.n > 0) Accepted else NotModified
     } else BadRequest

   }

标签: scalaplayframeworkreactivemongoplay-jsonreactivemongo-play-json

解决方案


我可以在这里给出另一种方法吗?你说:

“为了了解错误和更新文档的数量,但这不起作用”

为什么不使用 Play 提供的日志记录功能?总体思路是:

  1. 您设置日志记录级别(例如,仅警告和错误,或错误等)。
  2. 在任何情况下,您都可以使用log来输出一条消息,要么是好的,要么不是。
  3. Play 在运行时保存应用程序的日志。
  4. 您的维护人员/开发人员可以查看日志以检查是否有任何错误。

这种方法在未来打开了一个很大的可能性:您可以将日志保存到第三方服务中,并将监控功能放在它的顶部。

现在,如果我们查看这里的文档,您会看到不同的日志级别,以及如何使用记录器


推荐阅读