Scala Reactivemongo getAsTry不是PasswordInfo的成员

Scala Reactivemongo getAsTry不是PasswordInfo的成员,scala,playframework,reactivemongo,Scala,Playframework,Reactivemongo,我正在做一个将play剪影与reactivemongo集成的项目 当我编译我的项目时,会出现如下错误: [错误]/reactivemongo-screet-rest/app/models/daos/PasswordInfoDAO.scala:83:value-getAsTry不是com.mohiva.play.screet.api.util.PasswordInfo的成员 [错误]未来(一些(fullDoc.getAstrySonString.get)) mi方法如下: def find(l

我正在做一个将play剪影与reactivemongo集成的项目

当我编译我的项目时,会出现如下错误:

[错误]/reactivemongo-screet-rest/app/models/daos/PasswordInfoDAO.scala:83:value-getAsTry不是com.mohiva.play.screet.api.util.PasswordInfo的成员 [错误]未来(一些(fullDoc.getAstrySonString.get))

mi方法如下:

  def find(loginInfo: LoginInfo) = {

    implicit val userFormat = Macros.handler[PasswordInfo]
    val collection = db[BSONCollection]("PasswordInfo")

    val query = BSONDocument(
      "loginInfo" -> BSONDocument(
        "loginInfo" -> loginInfo.providerID,
        "loginInfo" -> loginInfo.providerKey
      )
    )

    val passwordInfo: Future[Option[PasswordInfo]] = collection.find( query ).one[PasswordInfo]

    passwordInfo.flatMap {
      case None =>
        Future.successful(Option.empty[PasswordInfo])
      case Some(fullDoc) =>
        Future(Some(fullDoc.getAsTry[PasswordInfo]("authInfo").get))
    }

    //Future.successful(data.get(loginInfo))

  }
完整版本如下:

密码信息如下:

有人能告诉我我做错了什么或我错过了什么吗

github上的存储库如下所示:

因此,当您在passwordInfo上获得模式匹配时,它不再是一个BSONDocument,因为调用了一个BSONDocument。PasswordInfo类型的userFormat为方法1提供隐式读取器,并将Future[选项[PasswordInfo]]返回给val PasswordInfo

这就是出现错误的原因:

[错误]/reactivemongo剪影rest/app/models/daos/PasswordInfoDAO.scala:83:value getAsTry不是com.mohiva.play.screet.api.util.PasswordInfo的成员[错误]

因为您已经有了类型[PasswordInfo],而它不是像定义了getAsTry的BSONDocument那样的ReactiveMongo类型

我不能完全确定你的回报类型,但希望这有帮助


这有帮助吗?如果您还有任何问题,请告诉我