在我的应用中,我打开了两个数据库连接。其中一个连接是标准开发数据库。第二个连接用于我专门用于测试的单独数据库。
让我们说第一个连接是打开的,我的应用程序正在运行,我决定要运行我的测试。运行的第一个测试打开第二个连接,如果已经存在则关闭它。
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()
我怎样才能确定它不会关闭第一个连接。我需要确定它将关闭与测试数据库的连接而不是开发数据库。
答案 0 :(得分:0)
您可以像这样处理您的连接:
因此,您的每个连接都将存储在一个代表它的变量中,并且您可以用它来进行交互。
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', () => {});
答案 1 :(得分:0)
这可能会有所帮助。不确定,但在某处,我看到处理两个单独的连接可以完成,
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);