我是否需要手动closuresmongoose连接?

新的Node,Mongoose和Mongodb – 没有阅读源代码…

我有一个Node应用程序,它打开一个文件,将这些行parsing成logging并将logging保存到mongodb中。 logging是Mongoose模型对象,并将它们保存到MongoDB,我所做的就是调用它们的save方法。

所以现在我都担心mongoosepipe理db = mongoose.connect(url) 。 我需要手动closures它吗? 如果是这样,我应该什么时候closures它(因为一切都asynchronous发生,很难说什么时候closures连接)?

似乎mongoose不仅保持连接的开放,而且使我的脚本不会终止。 save所有对象之后,可以安全地closuresmongoose连接吗? 否则,鉴于保存的asynchronous性质,很难准确知道closures连接的时间。

您确实需要调用mongoose.disconnect()来closures连接,但是您还需要等到所有的save调用完成其asynchronous工作(即调用它们的callback)之后再执行此操作。

因此,要么保持简单的计数,有多less仍然是优秀的跟踪或使用像asyncstream量控制框架做一些更优雅的东西。

发生节点POSIX信号时,应closuresmongoose连接。 当在terminal上按下Ctrl-C或服务器closures时,会触发SIGINT进程。

另一种可能的情况是在数据stream完成时closures连接。 无论如何,更推荐在启动时连接,在关机时断开连接。

这是SIGINT信号断开的代码。

 // If the Node process ends, close the Mongoose connection process.on('SIGINT', function() { mongoose.connection.close(function () { console.log('Mongoose disconnected on app termination'); process.exit(0); }); }); 

JohnnyHK说的是正确的。 添加“SIGTERM”。

简单的例子使用connection.close()

https://gist.github.com/pasupulaphani/9463004#file-mongoose_connet-js