如何在mongoose中关闭特定的数据库连接

时间:2017-11-24 08:14:51

标签: node.js mongodb mongoose nosql mocha

在我的应用中,我打开了两个数据库连接。其中一个连接是标准开发数据库。第二个连接用于我专门用于测试的单独数据库。

让我们说第一个连接是打开的,我的应用程序正在运行,我决定要运行我的测试。运行的第一个测试打开第二个连接,如果已经存在则关闭它。

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 个答案:

答案 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);