【问题标题】:Node.js MongoDB Sockets closed errorNode.js MongoDB 套接字关闭错误
【发布时间】:2016-03-05 10:01:39
【问题描述】:

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

有人能看出我哪里出错了吗?

【问题讨论】:

    标签: javascript node.js mongodb express


    【解决方案1】:

    在 find 查询完成之前,您正在关闭自己的数据库(这是一种异步方法)。删除 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();
        });
    
    
    });
    

    顺便说一句,通过每次查询连接/关闭数据库连接,您的性能会很差,您应该避免这样做:在应用启动时连接一次,在应用关闭时关闭数据库

    【讨论】:

    • :0 非常感谢! “垃圾邮件接受按钮”:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2013-05-23
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    相关资源
    最近更新 更多