簡體   English   中英

如何將使用mongodb-scala-driver檢索的Scala值綁定到標識符?

[英]How do I bind a Scala value retrieved using mongodb-scala-driver to an identifier?

我正在將代碼從Casbah轉換為mongodb-scala-driver,當涉及到捕獲查詢結果時,到目前為止我能想到的最好的方法是:

var doc: Option[Document] = None 
collection.find(and(equal("name",name),equal("hobby", hobby))).first().subscribe(
  (result: Document) => doc = Some(result)
)
if (doc.isDefined) {
  // ...
}

我只是不喜歡那種外觀。 我該如何改善?

  val observer = new Observer[Document] {
    override def onComplete {
      //do something when completed
   }

    override def onError(e: Throwable) {
            //do something when error
    }

    override def onNext(doc: Document) {
        //do some when a record is found
     // and keep your logic here maybe call another function passing 'doc'
     }

  } 
   collection.find(and(equal("name",name),equal("hobby",
         hobby))).first().subscribe(observer)

要么

    def doSome(doc:Document):Unit = {
                 //do something here with 'doc'
    }  
    collection.find(and(equal("name",name),equal("hobby",
    hobby))).first().subscribe(doSome)

您需要異步思考,類似於帶有回調的javascript。

PS。 我沒有測試代碼,它幾乎是偽代碼。

問候。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM