我将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
答案 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());
});