Как я могу увидеть, сколько документов было написано и правильно обрабатывать ошибки?
Из документации видно, что я должен быть в состоянии использовать 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? Общая идея такова:
- Вы устанавливаете уровень ведения журнала (например, только предупреждение и ошибки или ошибки и т. Д.).
- Вы могли бы использовать
log
для вывода сообщения в любом случае либо что-то нормально, либо нет. - Play сохраняет журналы вашего приложения во время его работы.
- Вы, сопровождающий / разработчик, можете заглянуть в журналы, чтобы проверить, нет ли ошибок.
Такой подход открывает большие возможности в будущем: вы можете сохранить журналы в стороннем сервисе и поставить над ним функции мониторинга.
Теперь, если мы посмотрим на документацию здесь, вы увидите о различных уровнях журнала и о том, как использовать регистратор.