MongoDB连接池

mongodb的MongoClinet是已经内置连接池了的,可以通过poolSize修改配置,至于获取连接实例,只需要用nodejs维持一个单例就可以了:

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/shop'

var option = {
    reconnectTries: 3,
    auto_reconnect: true,
    poolSize : 40,
    connectTimeoutMS: 500,
    useNewUrlParser: true
};

function MongoPool(){}

var p_db;

function initPool(cb){
  MongoClient.connect(url, option, function(err, db) {
    if (err) throw err;

    p_db = db;
    if(cb && typeof(cb) == 'function')
        cb(p_db);
  });
  return MongoPool;
}

MongoPool.initPool = initPool;

function getInstance(cb){
  if(!p_db){
    initPool(cb)
  }
  else{
    if(cb && typeof(cb) == 'function')
      cb(p_db);
  }
}
MongoPool.getInstance = getInstance;

module.exports = MongoPool;

调用时:

var MongoClient = require('mongodb').MongoClient
var app = require('express')()
var MongoPool = require('./db/dbPool.js')

app.listen(3000, function() {
  MongoPool.initPool()
  console.log('serve start successfully on the port: 3000')
})

app.get("/", function(req, res) {
  MongoPool.getInstance(function (client){
    var db = client.db('shop')
    db.collection('user').find({}).toArray(function(err, result) {
      res.end(JSON.stringify(result))
    })
  });
});
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 客户端即连接池,需要重写连接池 引入依赖<dependency><groupId>com.spring4all</...
    夜色001阅读 522评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,673评论 1 32
  • 一. Java基础部分.................................................
    wy_sure阅读 4,017评论 0 11
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 4,356评论 0 5
  • 2017.11.10号 星期五 天气大风 今天临时加班先让孩子爷爷去托辅接的孩子,我到家后孩子奶奶...
    吕政民阅读 143评论 0 0

友情链接更多精彩内容