node.js - 关于nodejs操作数据库的一个疑问?
高洛峰
高洛峰 2017-04-17 11:05:50
[Node.js讨论组]

不论是链接mongodb 还是连接mysql
基本上都是在model中先打开数据库 然后在关闭。
例如:

//打开
mongodb.open(function(err, db) {
db.collection('users', function(err, collection) {
    //....
    //操作完成及时关闭
    mongodb.close();
    callback(err, user);
  });
});

});

一个页面可能就需要从不同的表或集合都取数据,多次调用model中的不同操作。
那这样不就会进行多次打开,多次关闭了。
怎么样做能够解决这样的问题?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
巴扎黑

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('/');
  });
};
阿神

用连接池来管理,比如https://github.com/coopernurse/node-pool,用这个你可以很方便的封装一个对mongodb的连接池

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号