/ / Fehler von slick im Spiel scala - scala, playframework, slick

Fehler von Slick im Spiel Scala - Scala, playframework, slick

Ich spiele mit Scala, spiele und glänzt. Ich frage mich, wie ich einen Fehler von Slick im Spiel bekommen würde.

Sagen wir, es gibt ein 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)
}
}

Diese Eigenschaft wird in meinem Controller verwendet:

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))
}
}
}

Wenn es keinen Benutzer mit der angegebenen ID gibt, löst slick einen Fehler aus:

[NoSuchElementException: Invoker.first]

In meinem Client (Browser) erhalte ich einen Status 500 (Interner Serverfehler). Ich finde keine Beispiele, wie glatt und gespielt mit Fehlermeldungen aus der Datenbank oder Slick zusammenarbeiten soll.

Sollte der Rückgabetyp aller DAOs ein Try [User] sein? In allen Beispielen, die ich gesehen habe, kümmert es niemanden darum, dass er nicht glatt telefoniert. Was vermisse ich?

Antworten:

3 für die Antwort № 1

Sollte der Rückgabetyp aller DAOs ein Try [User] sein? In allen Beispielen, die ich gesehen habe, kümmert es niemanden darum, dass er nicht glatt telefoniert. Was vermisse ich?

Du fehlst Möglichkeit. Ändern Sie Ihre DAO-Methode, um zurückzukehren Option[User] und stattdessen anruft head Anruf headOption auf result.