我在Scala中真的很新,我想问一个简单的问题。Scala转换
我有一个返回Future[Option[T]
def findOne(query: JsObject)(implicit reader: Reads[T]): Future[Option[T]] = {
Logger.debug(s"Finding one: [collection=$collectionName, query=$query]")
collection.find(query).one[T]
}
一个功能,我不得不返回Future[Option[PasswordInfo]]
。
我想:
def find(loginInfo: LoginInfo): Future[Option[PasswordInfo]] = {
val result = find(Json.obj("loginInfo.providerID" -> loginInfo.providerID, "loginInfo.providerKey" -> loginInfo.providerKey))
result.onSuccess{
case something => Future.successful(Some(something).getOrElse(None))
}
}
我的类:
case class PersistentPasswordInfo(
loginInfo: LoginInfo,
authInfo: PasswordInfo
) extends TemporalModel {
override var created: Option[DateTime] = _
override var updated: Option[DateTime] = _
override var _id: Option[BSONObjectID] = _
}
'Future.successful(Some(something).getOrElse(None))'是错误的。 'Future.successful(Some(something))'应该就足够了,只要某些东西是一个密码信息 –
东西是PersistentPasswordInfo,我需要'authInfo'在我的类里面 – glarkou
'Future.successful(Some(something.authInfo))' ? –