如果我有电子邮件,我想要通过电子邮件获取用户(如果存在)。如果它不存在,我想插入并返回用户。如果存在,则返回用户,否则如果存在电子邮件地址选项,则插入
val userOptFut: Future[Option[User] = emailOpt.map { email =>
userDao.getByEmail(email).map { maybeUserFut =>
maybeUserFut match {
case Some(u) => Future.successful(Some(u))
case None =>
userDao.insert(User(....)) // Future[User]
}
}
}.getOrElse(Future.successful(None))
凡userDao.getByEmail(..)
返回Future[Option[User]]
我不知道什么是错的,但由于某些原因,它说我返回Object
,而不是用户。
类型未来的表达[对象]不符合预期 类型未来[选项[用户]]
什么错以上?
'getOrElse(无)'?所以如果获得失败,你会返回'None'?这不符合类型'未来[选项[用户]]'(我怀疑如果获得成功,它也不符合)。 – jwvh
@jwvh我更新了我的Q更新,现在它说Future [对象] – Blankman