0
votes

Comment utiliser Sélectionner une instruction en utilisant SLICK?

Je voulais interroger des données de la table d'exemple comme ci-dessous à l'aide de Slick

    SELECT password FROM users WHERE username = 'user';


4 commentaires

Je pense que votre exemple est presque identique à celui du Docs mais avec différents noms de colonne.


@ Jasper-m. J'ai essayé avec ça. Utilisateurs.Filter (_. Nom d'utilisateur === Nom d'utilisateur) .take (1) .Result.Readoption . Mais cela semble faux.


Vous avez oublié .map (_. Mot de passe) avant .take (1)


@Mateuszkubuszok Vous avez dit comme ce users.filter (_. Nom d'utilisateur === Nom d'utilisateur) .map (_. Mot de passe) .take (1) .Result.HeadOption ? . Il montre et erreur.


3 Réponses :


0
votes

Définissez d'abord une classe qui représente votre table SQL

class AuthService @Inject()(usersDao: UsersDao) {
  def someFunction(.. some_params ..) {
    usersDao.selectOne(someParama.email).flatMap {
      case Some(user: User) => //Do something if user exists
      case None => //Do something else if user doesn't exist
    }
  }
}


0 commentaires

1
votes

Vous pouvez simplement utiliser Query SQL uni Pour de tels cas:

sql"""SELECT password FROM users WHERE username = 'user'""".as[String]


0 commentaires

0
votes

Utiliser SLICK Vous pouvez écrire votre implémentation comme ci-dessous:

  def getPassword(userName: String): Future[Option[String]] = {
    db.run{
      userTableQuery.filter(_.username === userName).map(_.password).to[List].result.headOption
    }
  }


0 commentaires