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