手动关闭mongod.exe不会使用node-mongodb-native触发错误

时间:2013-10-23 07:36:10

标签: node.js mongodb node-mongodb-native

这是我在这里的第一篇文章。

我正在学习Node和Mongodb。我已经安装了node-mongodb-native驱动程序,并发现了一些意想不到的事情。

我的脚本位于the official tutorial之下。

var test;  //short cut for later use

require('mongodb').MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
    if (err) {return console.log("some error",err);}

    console.log("database connected");

    test = db.collection('test');
    test.find().toArray(function(err, items) {
        if (err) {console.log("some error");} 
        else {console.log("still connected");}
    });

});

var rep = function () {
    setTimeout(function () {
        test.find().toArray(function(err, items) {
            if (err) {console.log("some error: " + err);} 
            else {console.log("still connected");}
        });           
        rep(); 
    }, 2000);
}   

rep();

所以每经过2秒,console.log输出“仍然连接”,这是预期的。

如果mongod.exe窗口关闭(模拟丢失与数据库的连接),我希望在console.log中看到“some error”。但是,不会记录任何错误消息。

重启mongod.exe(模拟重新连接)时,console.log输出很多“仍然连接”的流

我无法从手册或其他在线资源中找到答案。所以我提出两个问题:

1)当前检测突然mongodb断开的最佳做法是什么?('close')当发生断开连接时是否应该使用find()查询发出错误?

2)重新连接后,console.log会输出相同消息的多行,就好像它们在断开连接时已经排队一样,现在一次被记录。这是正常的吗?我可以想到一个真实的生活问题:管理员可能会使用insert()来添加一些数据,而不是find()。数据库连接中断但没有错误消息,因此管理员可能会执行许多insert()但仍然看不到结果。然后重新连接时,一群insert()查询会淹没数据库?

请指出我的无知......

0 个答案:

没有答案