nodejs配置mongodb连接池

1. 写这个博客提醒下自己,走过的坑。

2. 废话不再说,直接上干货。

3. 代码

          ①引入模块

         var mongodb = require('mongodb');
          var ObjectId = require('mongodb').ObjectId;//Work
          var poolModule = require('generic-pool');

          用了路由管理,看情况粘贴

          const express = require('express');
          const trackRoute = express.Router(); const app = express();
          app.use('/tracks', trackRoute);

           ②创建个池子

           var pool = poolModule.Pool({
                'name'     : 'mongodb',
                'create'   : function(callback) {
          var server_options={'auto_reconnect':false,poolSize:10};
          var db_options={w:-1};
          var mongoserver = new mongodb.Server('localhost', 27017,server_options );
          var db=new mongodb.Db('first', mongoserver, db_options);
               db.open(function(err,db){
             if(err)return callback(err);
                  callback(null,db);
               });

//上面适用于mogodb无用户的,如果需要认证连接则需要将上面注释掉换成下面的

 db.authenticate('user','psw',function(){
                callback(err, db);
            });

          },
                'destroy'  : function(db) { db.close(); },
                'max'      : 10,
                'idleTimeoutMillis' : 30000,
                'log' : false
       });

            ③池子创建好了,测试一下

               

trackRoute.get('/', (req, res) => {

            pool.acquire(function(err, db) {
                console.log("进来了3");
                if (err) {
                    res.statusCode=500;
                    res.end(JSON.stringify(err,null,2));
                } else {
                    var _id=ObjectId("objectId");
                    db.collection("*****"). find(_id).toArray(function(err, result) { // 返回集合中所有数据
                        if (err) throw err;
                        console.log(result);
                        res.write("ok");
                          res.end();
                      
                    });
                }

pool.release(db);
            });
      

});
app.listen(8080, () => {
  console.log("App listening on port 8080!");
});

④测试结果

是不是发现各种错误,create错误?db is not function?

⑤修改办法

npm install [email protected]

npm installgeneric-pool@2.*

应该没有人会这样详细说是版本问题吧!如果你感到有用的话还请支持一下!蟹蟹!不支持,点个赞也是可以的(手动滑稽)。

猜你喜欢

转载自blog.csdn.net/wylheheda/article/details/83783517