J'essaie d'implémenter une méthode qui récupère tous les utilisateurs en réutilisant une méthode qui récupère un seul utilisateur basé sur l'ID utilisateur, mais ne peut pas comprendre la discordance de type. Voulez-vous me dire comment résoudre ce problème?Scala & Slick: incompatibilité de type avec [Produit avec Serializable] doit être corrigé
UserDAOImpl.scala:
def findAll: Future[Seq[User]] = {
val dbUsers: Future[Seq[DbUser]] = db.run(users.result)
dbUsers.map { dbUserSeq =>
dbUserSeq.map { dbUser => find(UUID.fromString(dbUser.userID)).value.get match {
case Success(Some(usr: User)) => usr
case _ => None
}}
}
}
Je laisse de côté la définition de find
car il fonctionne très bien, mais voici la signature.
def find(userID: UUID): Future[Option[User]] = {
Message d'erreur:
found : Seq[Product with Serializable]
required: Seq[models.User]
dbUserSeq.map { dbUser =>
^
Juste au cas où, la définition des utilisateurs
private val users = TableQuery[UserTable]
Toute suggestion serait appréciée.
Cela ne semble pas se rapporter à Slick mais à votre code seulement. ffind (UUID.fromString (dbUser.userID)) renvoie un futur donc vous avez probablement besoin d'un flatmap dessus? – Edmondo1984
Vous avez déjà tous les utilisateurs, non? C'est ici * val dbUsers: Futur [Seq [DbUser]] = db.run (users.result) * –
@ Edmondo1984 'cas Succès (Some (usr: User)) => usr' fait cela. Merci pour la réponse, cependant. – hirofujitaaki