Node.js 如何使用nodejs和expressjs将值从文件返回到路由器层

Node.js 如何使用nodejs和expressjs将值从文件返回到路由器层,node.js,express,Node.js,Express,我在TestRouter.js中有上述api TestRouter.js router.get('/all', function(req, resp) { var data = reportBo.getAll(); console.log(data); resp.status(200); resp.send(data); return resp; }); module.exports.getAll = function () { var conn

我在TestRouter.js中有上述api TestRouter.js

router.get('/all', function(req, resp) {
    var data = reportBo.getAll();
    console.log(data);
    resp.status(200);
    resp.send(data);
    return resp;
});
module.exports.getAll = function () {
    var connection = myDB.get();
    connection.collection('REPORTS').find({}).toArray(function (err, result) {
        if (err) {
            throw err;
        } else {
            //console.log(result);
            return result;            
        }
    });
};
我正在从TestRouter.js调用getAll()到TestDao.js。 它工作正常,可以在控制台中获取数据和打印。但我正在尝试将此结果发送到TestRouter.js,并尝试在控制台上打印它。但它显示的是
未定义的

TestDao.js

router.get('/all', function(req, resp) {
    var data = reportBo.getAll();
    console.log(data);
    resp.status(200);
    resp.send(data);
    return resp;
});
module.exports.getAll = function () {
    var connection = myDB.get();
    connection.collection('REPORTS').find({}).toArray(function (err, result) {
        if (err) {
            throw err;
        } else {
            //console.log(result);
            return result;            
        }
    });
};
在您的路由器中:

router.get('/all', function(req, resp) {
    reportBo.getAll(function(err, data){
      if(err){
         resp.status(500);
      } else {  
        resp.status(200);
        resp.send(data);
      }
    });
});

这种处理回调的方法在NodeJS中非常常见。此外,还有一种更好的方式叫做承诺。您可以仔细阅读。

这是一个异步调用。你必须以异步方式处理它。你能告诉我怎么做吗?请检查答案。