【发布时间】:2023-03-14 07:39:01
【问题描述】:
我正在尝试通过重用基于 userID 检索单个用户的方法来实现检索所有用户的方法,但无法确定类型不匹配。你能告诉我如何解决这个问题吗?
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
}}
}
}
我将省略find 的定义,因为它可以正常工作,但这里是签名。
def find(userID: UUID): Future[Option[User]] = {
错误信息:
found : Seq[Product with Serializable]
required: Seq[models.User]
dbUserSeq.map { dbUser =>
^
以防万一,用户的定义
private val users = TableQuery[UserTable]
任何建议将不胜感激。
【问题讨论】:
-
这似乎与 slick 无关,而仅与您的代码有关。 ffind(UUID.fromString(dbUser.userID)) 返回一个未来,所以你可能需要平面图?
-
您已经拥有了所有用户,不是吗?在这里 val dbUsers: Future[Seq[DbUser]] = db.run(users.result)
-
@Edmondo1984
case Success(Some(usr: User)) => usr部分做到了。不过感谢您的回复。 -
@Artavazd Balayan
Future[Seq[User]] not Future[Seq[DbUser]]是我所需要的。
标签: scala playframework slick