/ / error from slick in play scala - scala, playframework, slick

błąd ze śladu w scala play - scala, playframework, slick

Gram z scala, gram i gładzię. Zastanawiam się, w jaki sposób złapię błąd w grze.

Powiedzmy, że istnieje 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)
}
}

Ta cecha jest używana w moim kontrolerze:

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

Jeśli nie ma użytkownika o podanym ID, slick zgłosi błąd:

[NoSuchElementException: Invoker.first]

W moim kliencie (przeglądarce) otrzymuję status 500 (błąd wewnętrznego serwera). Nie znajduję przykładów, jak gładko działa i gra ma współpracować z komunikatami o błędach z bazy danych lub zręczności.

Czy typ zwrotu wszystkich DAO należy wypróbować [Użytkownik]? We wszystkich przykładach, które widziałem, nikt nie dba o nieudane połączenia. czego mi brakuje?

Odpowiedzi:

3 dla odpowiedzi № 1

Czy typ zwrotu wszystkich DAO należy wypróbować [Użytkownik]? We wszystkich przykładach, które widziałem, nikt nie dba o nieudane połączenia. czego mi brakuje?

Tęskniłeś Opcja. Zmień metodę DAO, aby powrócić Option[User] i zamiast tego dzwonić head połączenie headOption na result.