Node.js 如何在回调之外使用mongo客户端访问节点中的mongo db

Node.js 如何在回调之外使用mongo客户端访问节点中的mongo db,node.js,mongodb,Node.js,Mongodb,我一直在看这些例子: 但我对如何在回拨之外访问db感到相当困惑。MongoClient.connect似乎没有返回任何内容,我尝试在connect调用之外声明一个var,然后让回调修改它,但这似乎也不起作用。我应该怎么做呢?在connect的回调中,通过不使用“var”关键字来声明一个全局变量 注意:由于javascript是异步的,所以在使用回调之外的变量之前,并没有保证回调会运行。 使用超时通常有效 示例节点文件: var MongoClient = require('mongodb').

我一直在看这些例子:


但我对如何在回拨之外访问db感到相当困惑。MongoClient.connect似乎没有返回任何内容,我尝试在connect调用之外声明一个var,然后让回调修改它,但这似乎也不起作用。我应该怎么做呢?

在connect的回调中,通过不使用“var”关键字来声明一个全局变量

注意:由于javascript是异步的,所以在使用回调之外的变量之前,并没有保证回调会运行。 使用超时通常有效

示例节点文件:

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

MongoClient.connect('mongodb://localhost:27017/test',connectCallback);
function connectCallback(err, db) {
  col = db.collection('persons');
  console.log('Connected to mongodb');
  }
setTimeout(function() {
col.save( {task:"Access db outside callback",result: "Success"}, (err, result) => {
        if (err) 
            return console.log(err)
        console.log(result)
        })
},1000)
Mongo外壳输出:


在connect的回调函数中,通过不使用“var”关键字来声明一个全局变量

注意:由于javascript是异步的,所以在使用回调之外的变量之前,并没有保证回调会运行。 使用超时通常有效

示例节点文件:

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

MongoClient.connect('mongodb://localhost:27017/test',connectCallback);
function connectCallback(err, db) {
  col = db.collection('persons');
  console.log('Connected to mongodb');
  }
setTimeout(function() {
col.save( {task:"Access db outside callback",result: "Success"}, (err, result) => {
        if (err) 
            return console.log(err)
        console.log(result)
        })
},1000)
Mongo外壳输出: