我正在开发一个将play silhouette与reactivemongo整合的项目
当我编译项目时,向我显示如下错误:
[error] /reactivemongo-silhouette-rest/app/models/daos/PasswordInfoDAO.scala:83:value getAsTry不是com.mohiva.play.silhouette.api.util.PasswordInfo的成员 [error] Future(Some(fullDoc.getAsTryBSONString.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上的存储库是这样的: https://github.com/hectorgool/reactivemongo-silhouette-rest
答案 0 :(得分:0)
因此,当您在passwordInfo上进行模式匹配时,由于调用了一个,因此它不再是BSONDocument。在范围内,您的userFormat类型为PasswordInfo类型,它为方法1提供隐式读取器,并将Future [Option [PasswordInfo]]返回到您的val passwordInfo。
这就是出现错误的原因:
[error] /reactivemongo-silhouette-rest/app/models/daos/PasswordInfoDAO.scala:83:value getAsTry不是com.mohiva.play.silhouette.api.util.PasswordInfo的成员[错误]
因为你已经有了你的[PasswordInfo]类型,而不是像BSONDocument那样定义了getAsTry的ReactiveMongo类型。
我无法完全确定您的返回类型,但希望这会有所帮助。