不论是链接mongodb 还是连接mysql
基本上都是在model中先打开数据库 然后在关闭。
例如:
//打开mongodb.open(function(err, db) {db.collection('users', function(err, collection) { //.... //操作完成及时关闭 mongodb.close(); callback(err, user); });});
});
一个页面可能就需要从不同的表或集合都取数据,多次调用model中的不同操作。
那这样不就会进行多次打开,多次关闭了。
怎么样做能够解决这样的问题?
解决方案
Node 并不为每个请求创建单独的进程/线程,你可以只在程序启动的时候开打一个 Mongo 数据库连接,然后保存到全局变量中。
// db.jsvar MongoClient = require('mongodb').MongoClient;MongoClient.connect("mongodb://localhost:27017/xxoo", {}, function(err, db) { if(err) { console.log('Cannot connect to MongoDB.'); process.exit(1); } exports.accounts = db.collection('accounts');});// routers/account.jsvar db = require("../db");exports.signup = function(req, res) { // ... db.accounts.insert({ 'username': username, 'passwd': passwd }, function() { res.redirect('/'); });};