Javascript ExpressJS路由器&x2B;承诺不起作用
我对明确的回应和承诺有问题。 我的脚本调用MongoDB数据库以从服务器获取信息。我使用Promise仅在服务器应答时发送结果 问题在我的道路上。我得到了正确的回答,但是 res.send不返回任何内容。我不明白为什么 让我们回顾一下我的代码。我已经截断了一些文件,因为这不是重要的代码 我首先有一个带有路由器声明的server.js文件: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
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(..)显示一个空数组[]
谢谢