Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js MongoDB套接字关闭错误_Javascript_Node.js_Mongodb_Express - Fatal编程技术网

Javascript Node.js MongoDB套接字关闭错误

Javascript Node.js MongoDB套接字关闭错误,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我目前正在为我的NodeJS应用程序创建一个登录系统。然而,每当我尝试检索集合时,MongoDB都会出现一个奇怪的错误 错误消息 [MongoError: server localhost:27017 sockets closed] name: 'MongoError', message: 'server localhost:27017 sockets closed' 这是我连接数据库的代码 var username = req.body.user.username; var

我目前正在为我的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();
    });

有人知道我哪里出错了吗?

在完成查找查询之前,您正在关闭数据库(这是一种异步方法)。删除该
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连接,您的性能会非常差,您应该避免这样做:在应用程序启动时连接一次,然后在应用程序关闭时关闭DB:0非常感谢!“垃圾邮件接受按钮”: