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