Как я могу увидеть, сколько документов было написано и правильно обрабатывать ошибки?

Из документации видно, что я должен быть в состоянии использовать WriteResult.ok, WriteResult.code а также WriteResult.n чтобы понять ошибки и количество обновленных документов, но это не работает. Вот пример того, что я делаю (используя плагин RectiveMongoDB/Play JSON Collection):

   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

   }

1 ответ

Могу ли я дать альтернативный подход здесь? Вы сказали:

"чтобы понять ошибки и количество обновленных документов, но это не работает"

Почему вы не используете функциональность регистрации, предоставляемую Play? Общая идея такова:

  1. Вы устанавливаете уровень ведения журнала (например, только предупреждение и ошибки или ошибки и т. Д.).
  2. Вы могли бы использовать log для вывода сообщения в любом случае либо что-то нормально, либо нет.
  3. Play сохраняет журналы вашего приложения во время его работы.
  4. Вы, сопровождающий / разработчик, можете заглянуть в журналы, чтобы проверить, нет ли ошибок.

Такой подход открывает большие возможности в будущем: вы можете сохранить журналы в стороннем сервисе и поставить над ним функции мониторинга.

Теперь, если мы посмотрим на документацию здесь, вы увидите о различных уровнях журнала и о том, как использовать регистратор.

Другие вопросы по тегам