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

Из документации я вижу, что я должен иметь возможность использовать 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 Ответ

0 голосов
/ 14 октября 2018

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

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

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

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

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

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

...