node调用mongodb native2.0 api。 怎么把connection 抽出来?
发布于 10 年前 作者 xushao0305 3804 次浏览 最后一次编辑是 8 年前 来自 问答

目前看到的写法都是 每次curd的时候 connect一次,这样导致代码重复率太高,请问下 怎么把 如何返回一个connection? 后续的crud操作 这届用这个connection?

我写的一个简单的例子: var MongoClient = require(‘mongodb’).MongoClient var url = ‘mongodb://localhost:27017’; function mongoDB(url){ this.url = url; } var dbList = function(db, callbacck, errback){ var admin = db.admin(); admin.listDatabases(function(err, dbs){ if(err){ errback(err); }else callbacck(dbs); }); }

mongoDB.prototype.getDBList = function(){ MongoClient.connect(this.url, function(err, db){ dbList(db, function(data){ db.close(); }) }) }

var mongo = new mongoDB(url);

mongo.getDBList();

https://github.com/mongodb/node-mongodb-native。

3 回复

简化了一下: var MongoClient = require(‘mongodb’).MongoClient

var url = ‘mongodb://localhost:27017’;

function mongoDB(url){ this.url = url; }

var getConnection = function(url, callback, errback){ MongoClient.connect(url, function(err, db){ callback(db); }) }

mongoDB.prototype.getDBList = function(callback){ console.log(this.url) getConnection(url, function(db){ var admin = db.admin(); admin.listDatabases(function(err, dbs){ console.log(dbs); db.close(); }); }); }

var mongo = new mongoDB(url);

mongo.getDBList();

// module.exports = mongoDB;

@jysperm 有时间帮我解答一下吗?

没看你的代码(你好歹格式化一下啊),最简单的做法是把所有的代码都放到 MongoClient.connect 的回调里,这样所有代码都共用一个 db.

回到顶部