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.