【发布时间】:2021-11-14 12:07:02
【问题描述】:
正如您从下面的代码中看到的那样,我正在尝试创建一个具有以下格式的对象数组:
[{Region: Africa, Countries: X, X, X}, {Region: Asia, Countries X, X, X}]
X 代替国家名称。我能够成功创建这个对象数组。
创建完这个对象数组后,我想做一个res.send 200 来发送数据。问题是,在所有以前的配置中,我都会收到一个错误,因为 res.send 会尝试执行多次。现在我正在尝试通过承诺来做到这一点,并使用Promise.all。我很确定我没有正确实现它,因为现在这段代码没有产生任何东西,而是没有产生任何输出。
这段代码非常接近它需要的位置......如果有人可以告诉我我在这里缺少什么,那就太好了。它必须与承诺有关。
router.get("/FRPListing", async (req, res) => {
//Array of all regions
//Have a country list
//Holder Array
let regCountryList = new Array()
//New Array
let countryList = new Array()
countryList.push("Europe and UK", "Africa", "Middle East and Gulf", "Eurasia", "Asia", "Australasia", "North America", "Central America Caribbean", "South America", "Global")
countryList.forEach(async function (value) {
let EuropeUK = await FRPObj.find({Region: value}, 'Region Country').sort({Country: 1}).distinct('Country').exec()
let EuropeUKRegCountryList = new Object()
EuropeUKRegCountryList.Region = value
EuropeUKRegCountryList.Countries = EuropeUK
regCountryList.push(EuropeUKRegCountryList)
})
Promise.all(regCountryList).then(values => {
res.send({status: 200, results: regCountryList})
});
});
【问题讨论】:
标签: javascript mongodb mongoose promise