Joh*_*Doe 2 scala reactivemongo play-reactivemongo
我目前升级到0.12.RC3,希望能解决我遇到的以下问题.升级后,我收到了该collect方法的弃用警告.
所以我离开了:
def find(query: JsObject = Json.obj())(implicit reader: Reads[T]): Future[List[T]] = {
collection.flatMap(_.find(query).cursor[T](ReadPreference.nearest).collect[List]())
}
Run Code Online (Sandbox Code Playgroud)
至:
def find(query: JsObject = Json.obj())(implicit reader: Reads[T]): Future[List[T]] = {
collection.flatMap(_.find(query).cursor[T](ReadPreference.nearest).collect[List](Int.MaxValue, Cursor.FailOnError()))
}
Run Code Online (Sandbox Code Playgroud)
但是,遗憾的是我收到以下错误:
类型不匹配,预期:(JSONCollection)=> Future [NotInferedS],actual:(JSONCollection)=> Any
我认为你缺少一些编译器消息,应该看到类似的东西:
(maxDocs: Int,stopOnError: Boolean)(implicit cbf: scala.collection.generic.CanBuildFrom[List[_],T,List[T]], implicit ec: scala.concurrent.ExecutionContext)scala.concurrent.Future[List[T]] <and>
(maxDocs: Int,err: reactivemongo.api.Cursor.ErrorHandler[List[T]])(implicit cbf: scala.collection.generic.CanBuildFrom[List[_],T,List[T]], implicit ec: scala.concurrent.ExecutionContext)scala.concurrent.Future[List[T]]
cannot be applied to (Int, reactivemongo.api.Cursor.ErrorHandler[Any])
Error occurred in an application involving default arguments.
collection.flatMap(_.find(query).cursor[T](ReadPreference.nearest).collect[List](Int.MaxValue, Cursor.FailOnError()))
Run Code Online (Sandbox Code Playgroud)
这意味着在这种情况下,如果要使用new collect而不是已弃用的,则需要使用结果类型正确地注释ErrorHandler(there FailOnError):FailOnError[List[T]]
def find(query: JsObject = Json.obj())(implicit reader: Reads[T]): Future[List[T]] = collection.flatMap(_.find(query).cursor[T](ReadPreference.nearest).collect[List](Int.MaxValue, Cursor.FailOnError[List[T]]()))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
768 次 |
| 最近记录: |