以下代碼嘗試使用Reactivemongo通過ID獲取文檔。但是,我不知道如何處理ID錯誤時拋出的IllegalArgumentException! 試過下面的代碼,但編譯器不滿意case _ => Future.successful(None)
,它說:found scala.concurrent.Future[None.type] required Option[SomeModel]
。也試過case _ => None
沒有成功。需要幫助處理reactivemongo中的IllegalArgumentException
def getById(id: String)(implicit ec: ExecutionContext): Future[Option[SomeModel]]={
this.get(BSONDocument("_id" -> BSONObjectID(id))).map {
res => Future.successful(res)
}.recover {
case _ => Future.successful(None)
}
}
def get(query: BSONDocument)(implicit ec: ExecutionContext): Future[Option[SomeModel]]= {
collection.find(query).one[SomeModel](ReadPreference.Primary)
}
謝謝,編譯器現在感覺好多了。但我無法捕捉到這個例外。說'val resultFuture = get(BSONDocument(「_ id」 - > BSONObjectID(id))) .recover {case _ => None}既不resultFuture.onFailure也不resultFuture.onSuccess被達到/匹配。我如何匹配recover'case _ => None'模式? – Mutaz
'collection.find'是否拋出'IllegalArgumentException'或返回失敗的'Future'? –
仍然拋出'IllegalArgumentException' – Mutaz