我正在使用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]'/ –