Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 进程.exit()上是否自动关闭与MongoDB的连接?_Node.js_Mongodb - Fatal编程技术网

Node.js 进程.exit()上是否自动关闭与MongoDB的连接?

Node.js 进程.exit()上是否自动关闭与MongoDB的连接?,node.js,mongodb,Node.js,Mongodb,我正在使用mongodb驱动程序从Node.js应用程序连接到mongodb服务器 假设我的应用程序崩溃,或者我调用process.exit(),之前没有关闭连接-它是否保持打开状态?它是自动关闭的吗?如果是这样,谁会在乎呢?Node.js?TCP/IP协议栈?MongoDB…?什么时候会这样 如果我点击+,会有区别吗 答案是否定的。退出(或崩溃)时,数据库连接不会正常关闭 要做到这一点,您应该使用类似于: // Create a function to terminate your app g

我正在使用
mongodb
驱动程序从Node.js应用程序连接到mongodb服务器

假设我的应用程序崩溃,或者我调用
process.exit()
,之前没有关闭连接-它是否保持打开状态?它是自动关闭的吗?如果是这样,谁会在乎呢?Node.js?TCP/IP协议栈?MongoDB…?什么时候会这样


如果我点击
+
,会有区别吗

答案是否定的。退出(或崩溃)时,数据库连接不会正常关闭

要做到这一点,您应该使用类似于:

// Create a function to terminate your app gracefully:
function gracefulShutdown(){
    // First argument is [force], see mongoose doc.
    mongoose.connection.close(false, () => {
      console.log('MongoDb connection closed.');
    });
  });
}

// Ask node to run your function before exit:

// This will handle process.exit():
process.on('exit', gracefulShutdown);

// This will handle kill commands, such as CTRL+C:
process.on('SIGINT', gracefulShutdown);
process.on('SIGTERM', gracefulShutdown);
process.on('SIGKILL', gracefulShutdown);

// This will prevent dirty exit on code-fault crashes:
process.on('uncaughtException', gracefulShutdown);

还有一些包可以处理这种行为,但这通常非常简单,易于实现。

您是否能够运行mongod并在process.exit()执行时查看输出?我们正在使用mongoose,它做了相当多的连接管理,所以我怀疑我发布的内容是否准确。