/ / помилка від slick in play scala - 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))
}
}
}

Якщо немає користувача із заданим ідентифікатором, slick призведе до помилки:

[NoSuchElementException: Invoker.first]

У своєму клієнті (браузері) я отримую статус 500 (внутрішня помилка сервера). Я не знаходжу прикладів того, як гладка і гра повинна працювати разом із повідомленнями про помилки з бази даних або гладкою.

Чи повинен тип повернення всіх DAO бути спробувати [User]? У всіх прикладах, які я бачив, ніхто не піклується про невдалі дзвінки. Що я пропускаю?

Відповіді:

3 для відповіді № 1

Чи повинен тип повернення всіх DAO бути спробувати [User]? У всіх прикладах, які я бачив, ніхто не піклується про невдалі дзвінки. Що я пропускаю?

Ви відсутні Варіант. Змініть метод DAO, щоб повернутися Option[User] і натомість дзвонити head дзвонити headOption на result.