Node.js MongoDB套接字closures错误

我目前正在为我的NodeJS应用程序做一个login系统。 但是,每当我尝试检索一个集合时,我都会从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(); }); 

有人能看到我哪里出错了吗? 先谢谢了 :)

查找查询完成之前,您正在closures自己的数据库(这是一个asynchronous方法)。 删除那个db.close()或者在findOnecallback中移动它。

 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(); }); }); 

顺便说一下,通过连接/closures数据库连接与每个查询,你将有非常差的performance,你应该避免这样做:连接一次在应用程序启动,并closures应用程序closures数据库closures