ReactiveMongo подключается к MongoConnectionOptions

Я подключался к своей MongoDB, используя MongoConnectionOptions в reactivemongo версии 0.15.x. Сейчас обновился до 0.20.11.

Функция apply() сопутствующего объекта MongoConnectionOptions устарела. Предупреждение об устаревании говорит об использовании конструктора MongoConnectionOptions. К сожалению, этот конструктор является частным для пакета.

Я не хочу использовать устаревшую функцию apply в основном потому, что мои параметры компилятора scala не позволяют выводить предупреждения. (И я действительно не хочу это менять).

Официальная документация объясняет только устаревшую версию: http://reactivemongo.org/releases/0.1x/documentation/tutorial/connect-database.html.

Как я могу по-прежнему подключаться к базе данных, используя параметры подключения?


person peterschrott    schedule 19.06.2020    source источник
comment
Упомянутые вами версии 0.1.5 или 0.2.11 не существуют. Вариант подключения можно указать в URI (см. Документацию по подключению).   -  person cchantep    schedule 19.06.2020
comment
@cchantep извините, я ошибся в версиях. Я обновил их в исходном вопросе. Для URL: мне нужно собрать его программно.   -  person peterschrott    schedule 19.06.2020


Ответы (2)


Завод MongoConnectionOptions(..) будет переработан в следующем основном выпуске 1.0.x.

В любом случае, вы можете использовать .default + .copy(..):

import reactivemongo.api.MongoConnectionOptions

MongoConnectionOptions.default.copy(appName = "Foo")

Кроме того, параметры могут быть подготовлены (из файла конфигурации или программно) в виде строки URI.

val host = "localhost"
val port = 27017

reactivemongo.api.MongoConnection.connect(s"mongodb://${host}:${port}")
person cchantep    schedule 20.06.2020

Я использую следующий синтаксис, и он мне подходит:

val host = "localhost"
val port = "27017"
val db_name = "test"
val mongoUri = "mongodb://" + host + ":" + port + "/" + db_name
val driver = new AsyncDriver
val database = for {
  uri <- MongoConnection.fromString(mongoUri)
  con <- driver.connect(uri)
  dn <- Future(uri.db.get)
  db <- con.database(dn)
} yield db

val bsonCollection: Future[BSONCollection] = database.map(_.collection(collectionName))
person swapnil shashank    schedule 25.06.2020