[英]Slick/Scala: What is a Rep[Bind] and how do I turn it into a value?
[英]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.