我正在使用Play 2.5.4和ReactiveMongo编写Play / Scala应用程序。基于this example,我正在使用
获取该集合class SettingStore( val mongo:ReactiveMongoApi) {
def collection = mongo.db.collection[BSONCollection]("Settings")
// more code...
}
但是,db
现已弃用。弃用警告建议我使用database
,但这个返回Future
,因此必须映射所有操作。由于ReactiveMongo的操作也返回Future
,这似乎是多余的......获取集合的正确方法是什么? (或者,我是否完全错过了某些内容,Future[Future[Future[A]]]
是未来?)
答案 0 :(得分:0)
如果您查看documentation,可以使用.database
函数查看示例,而不是使用已弃用的.db
。
非异步.db
已被弃用,因为它无法提供足够的保证,无法在MongoConnection
池中找到有效连接。
假设一旦启动池,至少有一个连接处于活动状态,但根据网络速度/延迟,检查/发现ReplicaSet节点可能需要花费时间并非总是如此。
如果驱动程序无法加入节点一段时间(网络中断,节点重新启动,......),则相同的断言可能是错误的。可能需要一些时间,因此节点表明它们已重新上线。
新的.database
分辨率是异步的,并使用FailoverStrategy
等待(或不等待)可用连接(根据所选的读取偏好,...)。