我正在使用Scala的Play框架。我有Postgresql数据库。它通过以下代码获取数据: -
def eventById(id: Long): Option[EventRow] = {
val action = events.filter(_.id === id)
val results = db.run(action.result.head)
val notFound = None: Option[EventRow]
try {
Some(Await.result(results, Duration.Inf))
} catch {
case e: Exception => Logger.info(s"Failed to fetch event by id: $e.")
notFound
} finally {
}
}
}
如果数据未绑定,则抛出异常。在这里我不想抛出异常。我想返回notFound。我甚至无法在不抛出异常的情况下进行编译。
如果在数据库中找不到事件,有没有办法返回notFound?
请告诉我?谢谢!
答案 0 :(得分:0)
尝试:
def eventById(id: Long): Option[EventRow] = {
val action = events.filter(_.id === id)
val res: Future[Option[EventRow]] = db.run(action.result.headOption)
Await.result(res, Duration.Inf)
}