J'ai un DAO où je vérifie un nom d'utilisateur et je veux l'étendre pour vérifier le mot de passe, mais pour tester le but, je ne vérifie que pour le courrier électronique . Voici le DAO:Scala Slick 3 Correspondance du modèle de rappel de classe future
def authenticate(username: String, password: String): Future[Option[User]] = {
db.run(Users.filter(_.email === username).result).map(_.headOption)
}
Maintenant, j'ai un formulaire avec la méthode de vérification implémentée. Je peux faire le rappel onSuccess et onFailue, mais je ne suis pas capable de faire onComplete. Actuellement, il est comme ceci:
val loginForm = Form(
tuple(
"username" -> nonEmptyText,
"password" -> nonEmptyText
) verifying("Wrong username or password!", fields => fields match{
case (username, password) => {
val query = userDao.authenticate(username, password)
query onComplete {
case Success(Option[User]) => println("Success")
case Failure(_) => println("Failed ")
}
false
}
})
)
Ainsi, la classe Le succès est où le problème est, comme il est dit Pattern type is incompatible with expected type, found: Option.type, required Option[User]
. Maintenant, comment résoudre cette erreur et comment puis-je récupérer le résultat de cette requête de sélection via slick? Le modèle est simple avec l'email et le mot de passe comme valeurs.
Merci pour l'aide
double possible de [Puis-je faire la validation du formulaire de Async cadre de lecture 2.x (Scala)] (http://stackoverflow.com/questions/14913074/can-i -do-async-forme-validation-dans-play-cadre-2-x-scala) –