Được rồi, tôi tự trách mình (và tài liệu bí ẩn về trình điều khiển)
Trình điều khiển này không đồng bộ, vì vậy chúng tôi chỉ cần đợi nó hoàn thành ... Vì vậy, để tổng hợp bằng cách sử dụng (tìm thấy tại đây ) được sử dụng thực sự trong tài liệu mà không có trong chính trình điều khiển
implicit class DocumentObservable[C](val observable: Observable[Document]) extends ImplicitObservable[Document] {
override val converter: (Document) => String = (doc) => doc.toJson
}
implicit class GenericObservable[C](val observable: Observable[C]) extends ImplicitObservable[C] {
override val converter: (C) => String = (doc) => doc.toString
}
trait ImplicitObservable[C] {
val observable: Observable[C]
val converter: (C) => String
def results(): Seq[C] = Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))
def headResult() = Await.result(observable.head(), Duration(10, TimeUnit.SECONDS))
def printResults(initial: String = ""): Unit = {
if (initial.length > 0) print(initial)
results().foreach(res => println(converter(res)))
}
def printHeadResult(initial: String = ""): Unit = println(s"${initial}${converter(headResult())}")
}
Và thay đổi truy xuất theo cách đó:
def retrieveDocument(id: Int, collectionName: String, databaseName: String, url: String): Option[Document] = {
var res: Option[Document] = None
getMongoCollectionImmutable(collectionName, databaseName, url)
.find(Filters.equal("_id", id))
.limit(1).results().foreach({ x => res = Some(x) })
res
}
Nó khắc phục được sự cố của tôi.