Node.js MongoDB套接字关闭错误

4

我正在为我的NodeJS应用程序制作登录系统。但是,每当我尝试检索集合时,我都会从MongoDB获得一个奇怪的错误。

错误信息

[MongoError: server localhost:27017 sockets closed]
name: 'MongoError',
message: 'server localhost:27017 sockets closed'

这是我的连接数据库的代码。
    var username = req.body.user.username;
    var password = req.body.user.password;

    MongoClient.connect("mongodb://localhost:27017/myDb", function(err, db){
        assert.equal(null, err);

        var collection = db.collection("accounts");
        collection.findOne({"username": username}, function(err, item){
            console.log(item);
            console.log(err);
        });

        db.close();
    });

有人能看出我哪里做错了吗?
1个回答

9

您在查找查询完成之前关闭了数据库(它是异步方法)。请删除db.close()或将其移动到findOne回调函数中。

var username = req.body.user.username;
var password = req.body.user.password;

MongoClient.connect("mongodb://localhost:27017/myDb", function(err, db){
    assert.equal(null, err);

    var collection = db.collection("accounts");
    collection.findOne({"username": username}, function(err, item){
        console.log(item);
        console.log(err);
        db.close();
    });


});

顺便提一下,如果您在每个查询中连接/关闭DB连接,则性能将非常差,应避免这样做:在应用程序启动时连接一次,并在应用程序关闭时关闭数据库


"Spams the Accept Button" :) “不断点击接受按钮” :) - Jonty Morris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接