Как мне закрыть конкретное соединение с базой данных в 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', () => {});