我在不希望连续运行的脚本中使用猫鼬,而且我面对的似乎是一个非常简单的问题,但我找不到答案。简单地说,只要我调用将请求发送到mongodb的任何mongoose函数,我的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);
我尝试将调用添加到mongoose.disconnect(),但没有结果。除此之外,一切都很好(查找,保存等)。
这和这个人是完全一样的问题,可惜他没有得到任何答案:https : //groups.google.com/group/mongoose-orm/browse_thread/thread/c72cc1c51c76e661
谢谢
编辑:接受下面的答案,因为它在技术上是正确的,但是如果有人再次遇到此问题,则当您询问是否还有查询正在运行时,mongoose和/或mongodb驱动程序似乎实际上并未关闭连接。
它甚至根本不记得断开连接的调用,一旦查询运行完成,它就不再执行。它只会丢弃您的呼叫,不会引发任何异常或任何类似情况,并且永远不会真正关闭连接。
这样就可以了:如果您希望每个查询真正起作用,请确保在调用断开连接()之前已处理了每个查询。