如何捕获serverOpening事件?

时间:2019-01-18 10:25:05

标签: node.js mongodb

这是我的问题。承认我的BDD出于任何原因崩溃,我希望能够捕获此事件以停止我的网站,因为它仅取决于我的BDD。

我的问题是,当我停止mongoDB或重新启动它时,我无法捕获。

import { MongoClient } from 'mongodb';

let __mongodbClient;

export async function getMongoDBClient() {
  if (__mongodbClient == null) {
    __mongodbClient = await MongoClient.connect(
      MONGODB_URL,
      {
        appname: 'Test',
        useNewUrlParser: true,
        ignoreUndefined: true,
        authSource: MONGODB_AUTH_SOURCE,
        auth: MONGODB_AUTH,
        poolSize: 30,
      }
    );
    console.log(__mongodbClient);
    __mongodbClient.on('serverOpening', () => {
      console.log('serverOpening');
    });
    __mongodbClient.topology.on('close', (...args) => console.log('Connection closed', args) );

    __mongodbClient.on('reconnect', () => console.log('reconnect'));
    __mongodbClient.on('serverClosed', () => console.log('server closed'));
    __mongodbClient.on('error', () => console.log('error') );
  }

  return Promise.resolve(__mongodbClient);
}

这有什么问题? 它什么都不会发生。没错 寻求帮助

1 个答案:

答案 0 :(得分:0)

使用以下代码替换代码

let db = _mongodbClient.db('your db name');
    db().on('serverOpening', () => {
      console.log('serverOpening');
    });

    db.on('reconnect', () => console.log('reconnect'));
    db.on('serverClosed', () => console.log('server closed'));
    db.on('error', () => console.log('error') );

它应该可以工作