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()
或者在findOne
callback中移动它。
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