我目前正在为我的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();
});
有谁能看到我哪里错了吗?
发布于 2016-03-05 18:10:12
在find查询完成之前,您正在关闭自己的数据库(这是一个异步方法)。在findOne
回调中删除该db.close()
或移动它。
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 connexion的性能将非常差,您应该避免这样做:在应用程序启动时连接一次,并在应用程序关闭时关闭数据库
https://stackoverflow.com/questions/35812710
复制相似问题