MongoError:拓扑被破坏(find文档时),实例池被破坏(插入文档时)

我正在尝试使用Node.js,Express和Mongodb来构buildREST API。 我正在使用mongodb npm包来连接数据库,下面是我的sever.js文件代码

var express = require("express"); var app = express(); var bodyParser = require("body-parser"); var port = process.env.PORT || 8080; var mongo = require("mongodb"); var Server = mongo.Server; var Db = mongo.Db; var ObjectID = mongo.ObjectID; try{ var config = require('./configure.js'); }catch(e){ console.log("configuration file is hidden on github for security"); config = null; } var usersCollection = config.usersCollection; var login = require('./routes/login/index.js'); var signup = require('./routes/signup/index.js'); var Database = new Db(process.env.DBNAME || config.DBNAME , new Server(process.env.DBHOST || config.DBHOST, process.env.DBPORT || config.DBPORT, {'native_parser': true})); Database.open(function (err, mongoclient) { if(err){ console.log("Failed to connect to the database. Please Check the connection"); throw err; }else{ Database.authenticate(process.env.DBUSER || config.DBUSER, process.env.DBPASS || config.DBPASS, function(err, res) { if (err) { console.log("Authentication Failed"); throw err; }else{ console.log("Connected to the database Successfully"); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); var users = Database.collection(usersCollection); login(app,users); signup(app,users); Database.close(); } }); } }); app.listen(port,function(){ console.log("Server Started Listening to port : "+port); }); 

路由/login/ index.js

 module.exports = function(app,users){ app.route('/login') .post(function(req,res){ var username = req.body.username; var password = req.body.password; var query = {'FirstName':username}; users.find().toArray(function(err,docs){ if(err){ throw err; }else{ console.log("no err"); if(doc.LastName == password){ res.send({status : true}); }else{ res.send({status : false}); } } }); }); 

}

和路由/注册/ index.js

 module.exports = function(app,users){ app.route('/signup') .post(function(req,res){ var doc = { EmpNo:"1", FirstName:"Andrew", LastName:"Neil", Age:"30", Gender:"Male", Skill:"MongoDB", Phone:"408-1234567", Email:"Andrew.Neil@gmail.com", Salary:"80000" }; users.insert(doc,function(err,info){ if(err){ throw err; }else{ console.log('Successfully inserted ' + JSON.stringify(info)); res.send({result: 'done'}); } }); }); 

}

当我试图插入文件在server.js中,我能够插入他们成功,但通过路线/注册/ index.js我得到实例池被销毁类似如果我试图findserver.js中的文件没有错误,但如果我尝试从路由/login/ index.js做到这一点,那么我得到错误,因为拓扑被摧毁。

需要帮助来解决它。

如果连接在进程中间被切断,那么这些错误就会被抛出。

因为users.find()users.insert()函数都是asynchronous的,所以你的server.js文件到达Database.close()函数并closures到数据库的连接,这样就完成了这个过程。