Я использую Slick 3.0, и вот мои коды:
def registerMember(newMember: TeamMember): Future[Long] = {
db.run(
teamProfileTable.filter(u => u.ID === newMember.ID).result.headOption
).flatMap {
case None => Future(-1)
case _ => db.run(
(teamProfileTable returning teamProfileTable.map(_.staffID)) += newMember.toTeamRecord
)
}
}
Это может выглядеть нормально. Но когда есть больше уровней обратного вызова, коды могут стать трудными для чтения. Я пытался упростить коды, используя for-expression
или andThen
.. Но из-за части сопоставления с образцом я могу использовать только flatMap
для реализации этого..
У кого-нибудь есть идеи о том, как реорганизовать это?
andThen
здесь не подходит.. - person Hanfei Sun   schedule 12.05.2015