当db命令无法执行时,Mongoose不报告错误

时间:2016-07-22 20:29:04

标签: node.js mongodb express mongoose

我正在测试当数据库连接在执行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进程,然后继续执行代码,没有任何反应,mongoose似乎无声地失败。永远不会调用回调,也不会在此处或在app.js中定义如下的连接'error'事件侦听器中记录任何内容:

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

我本来期望一些错误消息告诉我无法执行保存。关于我做错的任何建议?

我使用的是MongoDB 3.2,mongoose 4.5.1,表达4.14和节点4.2.1。

提前致谢,

佛瑞德

1 个答案:

答案 0 :(得分:1)

您的回调未被调用,因为如果在调用save时未打开连接,则操作将排队,直到Mongoose能够重新建立连接。

请参阅文档here