Как получить базовое имя базы данных mongodb после подключения в nodejs? - PullRequest
0 голосов
/ 06 июля 2018

Я обнаружил, что в последней версии драйвера MongoDB nodejs появился класс MongoClient, который является первым экземпляром класса, который я могу получить после установления соединения. Но он не предоставляет экземпляр базы данных по умолчанию. Ниже приведен исходный код.

MongoClient.connect(url, (err, client) => {
    if(err) {
      return null;
    }
    client.db('test');  // how can I know the database name? Do I need to parse the url?
  });

Приведенный выше код показывает, как получить экземпляр клиента mongo после подключения. Мне нужно позвонить client.db, чтобы получить экземпляр базы данных. У меня вопрос, как я знаю имя базы данных по умолчанию в экземпляре client. Все, что я получаю, это соединение url. Нужно ли анализировать URL-адрес соединения, чтобы получить подключенную базу данных, которая test в приведенном выше примере?

Я знаю, что есть метод db.getName() возвращает имя базы данных. Но как я могу получить экземпляр db без разбора URL-адреса для получения имени базы данных из соединения?

Ответы [ 4 ]

0 голосов
/ 03 июля 2019

Я использую следующее:

const MongoClient = require('mongodb').MongoClient; // mongodb@3.1.4
const client = await MongoClient.connect(...);
const stats = await client.stats();
const dbName = stats.db;

Имя базы данных в объекте статистики.

0 голосов
/ 06 июля 2018

измените свой код, как показано ниже

let db = null;
MongoClient.connect('mongodb://localhost:27017/test', (err, client) => {
    if(err) {
      return null;
    }
    db = client.db('test');
  });

использовать db.getName ();

или измените конфигурацию, как показано ниже

var MongoClient = require('mongodb').MongoClient
  , Server = require('mongodb').Server;

    var mongoClient = new MongoClient(new Server('localhost', 27017));
    mongoClient.open(function(err, mongoClient) {
      var db1 = mongoClient.db("mydb");

      mongoClient.close();
    });

см. Документацию

0 голосов
/ 06 июня 2019

Имя базы данных находится внутри client, возвращенного из соединения:

db = client.db(client.s.options.dbName);

Проверено в версии 3.2

Я не смог найти ничего связанного в документации, поэтому не уверен, доступен ли он из какой-либо версии драйвера MongoDB или изменится ли он в будущих версиях.

0 голосов
/ 06 июля 2018

Что вы ищете, вероятно, db.getName(), который возвращает текущее имя базы данных (по умолчанию)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...