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