以下代码尝试使用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