2016-07-22 19 views
1

我正在测试Mongoose错误处理的情况,其中db命令(保存,更新等)无法执行时,数据库连接丢失之前或执行期间db命令。在这个例子代码:当db命令无法执行时,Mongoose不报告错误

var myModel = new MyModel(data); 
myModel.save(function (err, newDoc, numAffected) { 
    if (err || numAffected === 0) { 
     logger.error('Error inserting message: ' + err); 
    } 

    logger.info('Message inserted'); 
}) 

如果我把一个断点上myModel.save()行,杀mongod的过程中,则继续执行代码,没有任何反应和猫鼬似乎静默失败。回调是永远不会被调用,并没有什么记录在这里或定义为连接“错误”事件监听器遵循app.js:

var db = mongoose.connection;  
db.on('error', function(e) { 
    logger.error('connection error:' + e); 
}); 

我本来期望一些错误信息,告诉我不能执行保存。任何意见我做错了什么?

我使用的是MongoDB 3.2,mongoose 4.5.1,express 4.14和node 4.2.1。

由于提前,

弗雷德

+0

您是否将[安全](http://mongoosejs.com/docs/guide.html#safe)选项传递给您的连接或模式?只是检查,因为默认应该是'真的' –

+0

我没有明确地设置它,所以它使用默认值。 – fshort

回答

1

您的回调不会被调用,因为如果直到猫鼬能够连接没有当save被调用时,操作排队打开重新建立连接。

查看文档here

相关问题