MongoClient連接回調(diào)不起作用

我正在嘗試學(xué)習(xí)關(guān)于MongoDB的課程,但在運(yùn)行以下代碼時(shí)遇到問(wèn)題,這些代碼應(yīng)該允許我連接到mongoDB。我有兩個(gè)模塊:

mongoConnect.js

import { MongoClient} from 'mongodb';
import {EventEmitter} from 'events';
const uri = "<MYCONNSTRING>";
const dbName = "test";

class MongoConnect extends EventEmitter{
    constructor(){
        super();
        this.mongoClient = new MongoClient(uri,{useUnifiedTopology:true});
    }
    connect() {
        this.mongoClient.connect((err,mongodb)=>{
            if(err) throw err;
            console.log('Connection to DB Established');
            MongoConnect.blogDatabase = mongodb.db(dbName);
            this.emit('dbConnection');
        })
    }
};
export default  MongoConnect;

App.js(主模塊文件)

import express from 'express';
import MongoConnect from './mongoConnect.js';
const port = process.env.PORT || 3000;
const app = express();
const mongoConnect = new MongoConnect();

mongoConnect.on('dbConnection', ()=> {
    app.listen(port, ()=>{
        console.log(`server listening on port: ${port}`);
    });
});
mongoConnect.connect();

問(wèn)題是:connect()方法內(nèi)部的回調(diào)永遠(yuǎn)不會(huì)執(zhí)行。我在控制臺(tái)中看不到消息,也不知道如何繼續(xù)。

? 最佳回答:

根據(jù)您提供的代碼,您似乎正在使用MongoDB Node.js驅(qū)動(dòng)程序版本3.x或更高版本,它引入了連接API中的更改。新驅(qū)動(dòng)程序中的connect方法返回promise,而不是接受回調(diào)函數(shù)。

要解決這個(gè)問(wèn)題,可以在MongoConnect類(lèi)中修改connect方法,使其使用promise而不是回調(diào)。以下是代碼的更新版本:

class MongoConnect extends EventEmitter {
  constructor() {
    super();
    this.mongoClient = new MongoClient(uri, { useUnifiedTopology: true });
  }

  async connect() {
    try {
      await this.mongoClient.connect();
      console.log('Connection to DB Established');
      MongoConnect.blogDatabase = this.mongoClient.db(dbName);
      this.emit('dbConnection');
    } catch (err) {
      console.error('Error connecting to DB:', err);
    }
  }
}

export default MongoConnect;

通過(guò)在this.mongoClient.connect()之前使用await關(guān)鍵字,執(zhí)行將暫停,直到建立連接或出現(xiàn)錯(cuò)誤。如果發(fā)生錯(cuò)誤,它將被捕獲在catch塊中,您可以在那里進(jìn)行相應(yīng)的處理。

通過(guò)此修改,一旦建立連接,就應(yīng)該發(fā)出dbConnection事件,并且服務(wù)器應(yīng)該開(kāi)始偵聽(tīng)指定的端口。

請(qǐng)確保將mongodb包更新到最新版本,并確保您的MongoDB連接字符串(<MYCONNSTRING>)有效。

主站蜘蛛池模板: 亚洲一区二区无码偷拍| 一区二区在线视频| 久久精品国产一区二区三| 久久91精品国产一区二区| 无码国产精品一区二区免费模式| 久久精品一区二区| 国产精品一级香蕉一区| 无码人妻一区二区三区一| 另类ts人妖一区二区三区| 亚洲AⅤ视频一区二区三区| 久久久无码精品国产一区| 无码人妻一区二区三区一| 日本一区二区高清不卡| 国产精品一区二区久久国产| 久久一区二区明星换脸| 亚洲综合一区二区三区四区五区| 国产嫖妓一区二区三区无码| 中文字幕久久亚洲一区| 国产香蕉一区二区在线网站| 视频一区二区在线播放| 国产精品伦一区二区三级视频| 麻豆AV一区二区三区| 国产日韩精品一区二区在线观看播放| 国产观看精品一区二区三区| 2022年亚洲午夜一区二区福利| 国产精品美女一区二区| 日韩精品一区二区三区四区| 国内精品视频一区二区三区| 中文字幕乱码一区二区免费| 日本精品无码一区二区三区久久久| 无码精品蜜桃一区二区三区WW| 天堂国产一区二区三区| 国产一区二区在线观看视频 | 中文字幕日韩欧美一区二区三区| 高清一区二区三区| 国产精品视频免费一区二区| 久久国产精品一区免费下载| 亚洲日韩国产一区二区三区| 成人在线观看一区| 91国偷自产一区二区三区| 国产在线精品一区二区在线观看|