我正在使用Play 2.5.4和ReactiveMongo编写Play/Scala应用程序。基于this example,我得到使用在ReactiveMongo中获取集合的习惯方式
class SettingStore(val mongo:ReactiveMongoApi) {
def collection = mongo.db.collection[BSONCollection]("Settings")
// more code...
}
然而,db
现在已经过时的集合。弃用警告建议我使用database
,但是这一个返回Future
,所以必须映射所有操作。由于ReactiveMongo的操作也返回Future
s,这似乎是多余的...怎样才能获得集合? (或者,我是彻底失去了一些东西,并Future[Future[Future[A]]]
是未来?)
您必须使用'.flatMap()'或'for comprehension' –
谢谢。但是'def coll2 = for(db < - mongo.database)yield db.collection [BSONCollection](“GeoMaps”)'仍然产生'Future [BSONCollection]'...我做错了吗? –
是的。你很好。但我不明白问题。 '未来[BSONCollection]'你可以'.map()'到另一个'Future [T]'。在'Action'中,你可以使用'.async()',结果是'Future [Result]'。在显示的例子中,所有的结果都是'Future [T]'/ –