最佳答案
我在一个不需要连续运行的脚本中使用猫鼬,我面临着一个看起来很简单的问题,但是我找不到一个答案; 只要调用任何猫鼬函数,发送请求到 mongodb,我的 nodejs 实例就永远不会停止,我必须手动关闭它,比如,Ctrl + c 或 Program.exit ()。
代码大致如下:
var mongoose = require('mongoose');
// if my program ends after this line, it shuts down as expected, my guess is that the connection is not really done here but only on the first real request ?
mongoose.connect('mongodb://localhost:27017/somedb');
// define some models
// if I include this line for example, node never stop afterwards
var MyModel = mongoose.model('MyModel', MySchema);
我尝试添加调用 mongose.disconnect () ,但是没有得到结果。除此之外,一切都很好(查找、保存、 ...)。
这是完全相同的问题,因为这个人,遗憾的是,他没有收到任何答案: https://groups.google.com/group/mongoose-orm/browse_thread/thread/c72cc1c51c76e661
谢谢
编辑: 接受下面的答案,因为它在技术上是正确的,但如果有人再次遇到这个问题,似乎猫鼬和/或 mongodb 驱动程序并没有真正关闭连接,当你问它,如果仍然有查询运行。
它甚至根本不记得断开连接的调用,一旦查询运行完毕,它也不会这样做; 它只是丢弃您的调用,没有抛出任何异常或类似的东西,并且永远不会真正关闭连接。
因此,如果您希望 disconnect ()能够实际工作,那么在调用 disconnect ()之前,请确保每个查询都已经处理完毕。