首页 > 解决方案 > 如何捕捉 serverOpening 事件?

问题描述

这是我的问题。承认我的 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);
}

那有什么问题?它不会发生任何事情。没有错误。谢谢帮助

标签: node.jsmongodb

解决方案


将代码替换为以下

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') );

它应该工作


推荐阅读