在连接回调之外访问MongoDB

Lyt*_*gas 6 mongodb node.js

我知道已经提出了类似的问题,但实际上没有人显示执行此操作的代码,它们只链接到也不显示代码的页面.

无论如何,基本上我的节点服务器在socket.io事件上接收数据.我希望这些数据进入MongoDB.问题是我见过的所有mongo代码示例都只MongoClient.connect使用该db对象来操纵回调内的数据库.

因为,我将获得大量这些数据,我不想一遍又一遍地初始化.

我需要的是这样的:

MongoClient.connect(("mongodb://" + process.env.IP + ":27017/feedback"),
function(err, db) { ... });
Run Code Online (Sandbox Code Playgroud)

然后是:

socket.on('data', function (data) {
    db.doStuff();
});
Run Code Online (Sandbox Code Playgroud)

Sha*_*oor 6

MongoClient.connect() 如果你不给它一个回调就返回一个承诺,你可以宣布一个全球承诺:

var connect = MongoClient.connect(url);

socket.on('data', function(data) {
  connect.then(function(db) {

  });
});

socket.on('otherData', function(data) {
  connect.then(function(db) {

  });
});
Run Code Online (Sandbox Code Playgroud)