MongoDB-Express:无法使客户端/数据库脱离连接功能

时间:2018-09-13 13:03:33

标签: node.js mongodb

我将MongoDB的连接功能分离到一个单独的模块中,以便可重新使用mongoDB连接。问题是,我无法在connect函数之外获取client / DB变量。显示未定义。

var MongoClient = require('mongodb').MongoClient;

var _client;
var mongoURL = "mongodb://localhost:27017/";

module.exports = {
    connectToMongoServer: (callback) => {
        MongoClient.connect(mongoURL,{ useNewUrlParser: true },function(err,client){
            _client = client;
            return callback(err);
        });
    },
    getClient: () => {
        return _client;
    }
};

在connect函数中,_client详细信息包含该信息,但是如果我使用getClient返回它,它将显示未定义

MongoDB-v3.6.5

节点-v9.9.0

1 个答案:

答案 0 :(得分:1)

我已经制作了一个代码段,该代码段应与您的代码在同一广告上也有效。 因此,我认为问题在于您如何调用函数getClient();确定要在连接后 后调用它吗?

var _client;

function someAsyncFunc(callback) {
 setTimeout(() => callback(false, 'client'), 500);
}

const file = {
  connectToMongoServer: (callback) => {
   someAsyncFunc(function(err, client) {
      _client = client;
      
      return callback(err);
    });
  },
  
  getClient: () => {
    return _client;
  }
};

console.log('display one :', file.getClient());

file.connectToMongoServer((err) => {
  console.log('display error :', err);
  
  console.log('display two :', file.getClient());
});