Как мне закрыть конкретное соединение с базой данных в mongoose

В моем приложении у меня открыто два подключения к базе данных. Одно из соединений для стандартной базы данных разработки. Второе соединение предназначено для отдельной базы данных, которую я специально использую для тестирования.

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

import mongoose from 'mongoose';
import 'dotenv/config';

mongoose.Promise = global.Promise;

describe('Mocha testing setup', function() {
  it('Connect to testing database and clear old data', function(done) {
    mongoose.connect(process.env.DB_TEST).then(db => {
      done();
    }).catch(err => {
      mongoose.connection.close().then( => {
        console.log('Testing database has been closed.');
      }).catch(done);
    });
  })
})

Когда я бегу:

mongoose.connection.close()

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

2 ответа

Это может помочь. Не уверен, но где-то я видел, как обработка двух отдельных соединений может быть выполнена как,

const devConn = mongoose.createConnection();
devConn.open("mongodb://localhost/development",callBack1);

const testConn = mongoose.createConnection();
testConn.open("mongodb://localhost/test",callBack1)

После этого вы можете закрыть любое соединение, написав что-то вроде:

devConn.close(callBack2);
testConn.close(callBack2);

Вы можете обрабатывать ваши соединения следующим образом:

Таким образом, каждое ваше соединение будет храниться в одной переменной, которая представляет его и которую вы можете использовать для взаимодействия.

  this.db = mongoose.createConnection(url, opt);

  // What happend when we connect
  this.db.once('open', () => {});

  // What happend on error
  this.db.on('error', (err) => {});

  this.db.on('disconnected', () => {});

  this.db.on('connected', () => {});

  this.db.on('close', () => {});
Другие вопросы по тегам