На первый взгляд, у вас есть несоответствие типов для понимания:
for {
t <- db.getSomething()
ids <- t.map(_.id).toSeq
histo <- fetchOtherRelatedDetails(ids)
} yield histo
это десугары до
db.getSomething().flatMap { t =>
t.map(_.id).toSeq.flatMap { ids =>
//^_______________________^
// the return type of this expression is Seq[A], but Future[A] is expected
fetchOtherRelatedDetails(ids).map(histo => histo)
}
}
Как уже было отмечено, вы не можете вернуть Seq
там, где ожидается Future
. Другими словами, все выражение справа от <-
должно иметь общий «контейнер» (в данном случае Future
) для проверки на проверку типов.
В этом конкретном случае вы можете исправить это с помощью назначения вместо flatMap
(<-
)
for {
t <- db.getSomething()
ids = t.map(_.id).toSeq
histo <- fetchOtherRelatedDetails(ids)
} yield histo