Slick Orm для Scala, как я могу получить значение столбца базы данных
Я новичок в Slick ORM, использующий версию 3.1.1, и в примерах для простого SQL я не видел, как я могу получить значение столбца базы данных http://slick.typesafe.com/doc/3.1.1/sql.html Это мой простой пример
def listfollowing() = Action.async {
val selectq=sql"""SELECT model,id from carsDB where id=17""".as[(String,Int)]
// I would like to get the value of model back and put it in a Var
// var model= model
database.run(selectq).map {finished=>
// I would like to get the value of model back and put it in a Var
// var model= model
Ok(finished.toString())
}
}
Как я могу вернуть значение модели столбца, чтобы я мог поместить его в var или val?
1 ответ
Решение
Когда вы делаете: database.run(selectq).map {finished=> ... }
finished
это Vector[(String,Int)]
, Если вы уверены, что он возвращает только одну строку (из-за "... where id=17"
) тогда вы можете взять headOption()
и проверим, есть ли в нем значение (если нет -> id с идентификатором 17, его не будет), если есть -> return, иначе вернет ошибку. Код будет примерно таким:
def listfollowing() = Action.async {
val selectq = sql"""SELECT model,id from carsDB where id=17""".as[(String, Int)]
db.run(selectq).map { finished =>
finished.headOption match {
case s: (String, Int) => Ok(s._1)
case None => Ok("No car found for requested id")
}
}
}