Javascript ExpressJS路由器&x2B;承诺不起作用

Javascript ExpressJS路由器&x2B;承诺不起作用,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我对明确的回应和承诺有问题。 我的脚本调用MongoDB数据库以从服务器获取信息。我使用Promise仅在服务器应答时发送结果 问题在我的道路上。我得到了正确的回答,但是 res.send不返回任何内容。我不明白为什么 让我们回顾一下我的代码。我已经截断了一些文件,因为这不是重要的代码 我首先有一个带有路由器声明的server.js文件: let router = express.Router(); app.use('/mongo', MongoRouter); 下面是我的MongoRoute

我对明确的回应和承诺有问题。 我的脚本调用MongoDB数据库以从服务器获取信息。我使用Promise仅在服务器应答时发送结果

问题在我的道路上。我得到了正确的回答,但是 res.send不返回任何内容。我不明白为什么

让我们回顾一下我的代码。我已经截断了一些文件,因为这不是重要的代码

我首先有一个带有路由器声明的server.js文件:

let router = express.Router();
app.use('/mongo', MongoRouter);
下面是我的MongoRouter.js文件:

import { Router } from 'express';
import { MongoController } from '../Controllers/MongoController';

class MongoRouter {
    constructor() {
        this.router = Router();
        this.controller = new MongoController();
        this.routes();
    }

    routes() {
        let obj = this;
        this.router.get('/global', (req, res) => {
            let promise = obj.controller.globalInfos();
            promise.then((value) => {
                console.log('Resolve OK. Showing data');
                console.log(value);
                res.send(value);
            }).catch((error) => {
                res.status(500).send(error.toString());
            });
        });
        this.router.get('*', (req, res) => {
            res.json({
                data: 'Invalid route'
            });
        });
    }

}

export default new MongoRouter().router;
以及来自我的MongoController的函数globalInfos()

globalInfos() {

    var status = '';
    var globalInfos = new Array();
    var internalServerReached = 0;
    var dbCommand = {'serverStatus': 1};

    let obj = this;

    return new Promise((resolve, reject) => {
        obj.cnxStrings.forEach(element => {
            MongoClient.connect(element['cnxString'], (err, db) => {
                if (!err) {
                    if (element['replica'] == true) {
                        dbCommand = {'replSetGetStatus':1};
                    }
                    db.command(dbCommand, (err, results) => {
                        if (!err) {
                            status = results;
                        } else {
                            status = 'Status unknown';
                        }
                        globalInfos[element['name']] = status;
                        internalServerReached++;

                        db.close();
                        if (internalServerReached >= obj.cnxStrings.length) {
                            console.log('Waiting 3s for the resolve');
                            setTimeout(() => {
                                resolve(globalInfos);
                            },3000);
                        } 
                    });
                } else {
                    status = 'Unreachable';
                }
            });
        });
    });
}
当我转到正在运行的函数时,解析在3秒后调用,我的数据在控制台中(在.then()回调中)正常,但res.send(..)显示一个空数组[]

谢谢