首页 > 开发 > NodeJS > 正文

关于nodejs操作数据库的一个疑问?

2017-09-08 17:34:33  来源:网友分享

不论是链接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('/');  });};