ES6的export输出局部变量

下面是一个nodejs查询mongodb数据库的代码,我想输出函数findDocuments()的结果,但是它是在MongoClient.connect()函数中运行的,所以是个局部变量,不能输出。要怎么才可以?

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


//查询所有记录
var findDocuments = function(db, callback) {
    var collection = db.collection('documents');

    collection.find({}).toArray(function(err, docs) {
        assert.equal(err, null);
        console.log("Found the following records");
        console.log(docs);
        callback(docs);
    });
};


//连接数据库
var url = 'mongodb://localhost:27017/myproject';

MongoClient.connect(url, function(err, db) {
    assert.equal(null, err);
    console.log("Connected correctly to server");

    //把结果保存到documents变量中
    var documents = findDocuments(db, function() {
        db.close();
    });
});

//输出documents变量,不能输出
export {documents}


阅读 3.7k
2 个回答

export一个promise吧,把MongoClient.connect封装成一个promise,或者用async/await

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


//查询所有记录
var findDocuments = function(db) {
    var collection = db.collection('documents');

    return new Promise((resolve, reject) => {
        collection.find({}).toArray(function(err, docs) {
            if(err) reject(err);
        
            // assert.equal(err, null);
            
            console.log("Found the following records");
            console.log(docs);
            resolve(docs);
            db.close();
        });
    });
};



var url = 'mongodb://localhost:27017/myproject';

//把结果保存到documents变量中
export.documnets = new Promise((resolve, reject) => {
    //连接数据库
    MongoClient.connect(url, function(err, db) {
        if(err) reject(err);
        
        // assert.equal(null, err);
        
        console.log("Connected correctly to server");
    
        resolve(findDocuments(db));
    });
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题