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")
        }
    }
}
Другие вопросы по тегам