订阅MONGO查询不起作用
问题描述:
我用playframework与“org.mongodb.scala” %%“蒙戈 - 斯卡拉驱动程序”%“1.0.1”,并有代码:订阅MONGO查询不起作用
val collection = Mongo.db.getCollection("regionAuth")
def getRegions = {
val find: Observable[Document] = collection.find()
Logger.info("regions searching")
find.subscribe(new Observer[Document] {
override def onError(e: Throwable): Unit = Logger.error("regions error", e)
override def onSubscribe(subscription: Subscription): Unit = Logger.info("subscribed")
override def onComplete(): Unit = Logger.info("regions done")
override def onNext(result: Document): Unit = Logger.info("region accepted")
})
find.map { region =>
Logger.info("region accepted by map")
region
}
find.foreach(_ => Logger.info("region accepted by foreach"))
find.toFuture().onComplete {
case Success(r) => Logger.info("regions accepted as future seq " + r.size)
case Failure(e) => Logger.error("regions error as future", e)
}
find
}
它打印:
[信息]应用 - 区域搜索
[信息]应用 - 订阅
[信息]应用 - 区域由foreac接受ħ
[信息]应用 - 通过的foreach接受区域
[信息]应用 - 通过的foreach接受区域
[信息]应用 - 区域接受为未来SEQ 3
为什么订阅的活动和地图不工作?
答
我希望不是太晚。 如果这是一个独立的应用程序,没有别的运行,你必须等到未来完成。
...
val future = find.toFuture()
future.onComplete {
case Success(r) => Logger.info("regions accepted as future seq " + r.size)
case Failure(e) => Logger.error("regions error as future", e)
}
scala.concurrent.Await.result(future)
find
或者你可以看看https://github.com/sgodbillon/reactivemongo-tailablecursor-demo – cchantep