2016-06-09 1 views
0

을 작업하고 그 코드가없는 쿼리를 몽고 구독하기 :나는 "org.mongodb.scala"로 playframework를 사용 %% "몽고 - 스칼라 드라이버"% "1.0.1"

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는에 의해 허용 지역

[정보] 응용 프로그램 - 지역 미래 서열로 받아 3

님의 이벤트와 지도을 구독 하시겠습니까?

+0

또는 https://github.com/sgodbillon/reactivemongo-tailablecursor-demo에서 살펴볼 수 있습니다. – cchantep

답변

0

너무 늦지 않기를 바랍니다. 이 프로그램이 다른 프로그램이 실행되지 않는 독립 실행 형 응용 프로그램 인 경우 향후 완료 될 때까지 기다려야합니다.

... 
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 
관련 문제