当我在名为db的变量中存储Mongoose.Connection并创建一个单独的方法来通过变量db关闭连接时,我无法关闭Mongoose连接 我已经try 了db.closemongoose.disconnect()两种方法

const mongoose = require('mongoose');

var db;

const connectToDB = function (callback) {
    let dbUrl;
    if (environmentTokens.enviroment === "test") {
        dbUrl = localDBUrl;
    } else {
        dbUrl = environmentTokens.mongoDBUrl;
    }
    mongoose.connect(dbUrl);
    db = mongoose.connection

    db.on('error', (err) => {
        tracer.error('Connection error with database', err);
    })

    db.on('connected', () => {
        tracer.info('Connected with database', dbUrl);
        console.log('Mongoose default connection connected');
        callback();
    })
};

const getDB = function () {
    return db;
};

const disconnectDB = function () {
    db.close(function () { 
        console.log('Mongoose default connection disconnected through app termination')}) 
    // mongoose.disconnect(function () { 
    //     console.log('Mongoose default connection disconnected through app termination')}) 

}
module.exports = {
    connectToDB, disconnectDB, getDB
};

并从index.js文件中调用disconnectDB方法

process.on('SIGINT', () => {
  disconnectDB();
  process.exit()
})

推荐答案

连接正在关闭,但您的程序在调用回调之前已退出.

要确认,请try :

process.on('SIGINT', () => {
  disconnectDB(true);
})
const disconnectDB = function (exit=false) {
    db.close(function () { 
        console.log('Mongoose default connection disconnected through app termination')}) 
        if (exit) process.exit()
    })
    // mongoose.disconnect(function () { 
    //     console.log('Mongoose default connection disconnected through app termination')}) 

}

Node.js相关问答推荐

MongoServelSelection错误:服务器 Select 在30000 ms后超时

Mongoose更新在^8.0.3版中,许多似乎不能按预期工作

在内存中加载安全密钥安全吗?还是每次都从文件中读取?

为什么我收到此错误:MissingSchemaError:架构尚未为模型&业务&注册

为什么我的过滤器无法在我在下面编写的 Google Analytics 4 应用程序脚本代码中工作?我该如何修复它?

Rails 7导入npm yaml包时出现404错误

更新 mongodb 中的交易值

是否可以在 NodeJS 代码库中的每个函数之前和之后添加 console.log?

在 getServerSideProps 中使用 EmailProvider 获取 NextAuth 会话会抛出 fs找不到模块

带有事件网格的 Azure 函数在没有 ngrok 的情况下在本地运行

使用Typescript 时我应该避免循环导入吗?

Cypress net::ERR_EMPTY_RESPONSE 在真实服务器调用上

如何在 Nest.js 中使用查询参数?

您如何写入 aws lambda 实例的文件系统?

如何正确使用 package.json 中的关键字属性?

什么使用/尊重 .node-version 文件?

为什么 Node 控制台不显示功能代码?

Fluxible 中的脱水和再水合代表什么?

Express.js中的bodyParser.urlencoded({extended: true }))和bodyParser.json()是什么意思?

如何调试 Gulp 任务?