订阅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

为什么订阅的活动和地图不工作?

+0

或者你可以看看https://github.com/sgodbillon/reactivemongo-tailablecursor-demo – cchantep

我希望不是太晚。 如果这是一个独立的应用程序,没有别的运行,你必须等到未来完成。

... 
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