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';
3 Réponses :
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
}
}
}
Vous pouvez simplement utiliser Query SQL uni Pour de tels cas:
sql"""SELECT password FROM users WHERE username = 'user'""".as[String]
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
}
}
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 code>. Mais cela semble faux.Vous avez oublié
.map (_. Mot de passe) code> avant.take (1) code>@Mateuszkubuszok Vous avez dit comme ce
users.filter (_. Nom d'utilisateur === Nom d'utilisateur) .map (_. Mot de passe) .take (1) .Result.HeadOption code>? . Il montre et erreur.