来自scala的光滑错误

时间:2015-08-05 08:09:48

标签: scala playframework slick

我玩斯卡拉,玩耍和光滑。 我想知道如何在游戏中发现错误。

让我们说,有一个DAO:

trait UserDao extends DAOSlick with UserComponent with HasDatabaseConfig[JdbcProfile] {
  import driver.api._

  def getUserWithId(id: UUID) = {
    db.run(userTable.filter { x => x.userId === id }.result.head)
  }
}

这个特性在我的控制器中使用:

class UserController extends Controller with UserDao {
  import driver.api._

   def getUser(id: String) = Action.async { implicit request =>
    getUserWithId(UUID.fromString(id)).map {
      res => Ok(Json.toJson(res))
    }
  }
}

如果没有具有给定ID的用户,则光滑将引发错误:

[NoSuchElementException: Invoker.first]

在我的客户端(浏览器)中,我收到状态500(内部服务器错误)。 我没有找到示例,如何将光滑和播放与数据库或光滑的错误消息一起使用。

所有DAO的返回类型应该是Try [User]吗? 在我看到的所有例子中,没有人关心失败的光滑呼叫。我错过了什么?

1 个答案:

答案 0 :(得分:3)

  

所有DAO的返回类型应该是Try [User]吗?在我看到的所有例子中,没有人关心失败的光滑呼叫。我错过了什么?

您缺少Option。更改您的DAO方法以返回Option[User],而是在head上呼叫headOption来电result