1. 程式人生 > >nodejs配置mongodb連線池

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 [email protected]*

應該沒有人會這樣詳細說是版本問題吧!如果你感到有用的話還請支援一下!蟹蟹!不支援,點個贊也是可以的(手動滑稽)。