javascript - 在 Node.js / Express.js / Javascript / Ecmascript 中的函数之外时,对象不保存
问题描述
我正在使用 Node.js 和 Express 制作应用程序。我的一个路由文件中有以下内容:
router.get('/', (req, res) => {
Manufacturer.find({}, (err, manufacturers) => {
if(err) {
console.log(err)
req.flash('error', 'No manufacturers were found')
res.redirect('/')
}
let allAircrafts = {"manufacturers": {}}
for(let key in manufacturers) {
let currentManufacturerAircrafts = []
let manufacturerName = manufacturers[key].name
Aircraft.find({manufacturer_name: manufacturerName}, (err, aircrafts) => {
if(err) {
console.log(err)
req.flash('error', 'No aircrafts were found')
res.redirect('/')
}
for(let akey in aircrafts) {
currentManufacturerAircrafts.push(aircrafts[akey])
}
// let manufacturerObj = {name: manufacturerName, aircrafts: currentManufacturerAircrafts}
allAircrafts["manufacturers"][manufacturerName] = currentManufacturerAircrafts
// console.log(allAircrafts) #1
})
}
// console.log(allAircrafts) #2
res.render('aircrafts', { expressFlash: req.flash(), sessionFlash: res.locals.sessionFlash, allAircrafts})
})
})
该allAircrafts
对象应该存储来自所有制造商的所有飞机,当console.log
它低于(在#1中)它确实有效并且我得到了预期值。当我console.log
在#2中时,我只得到这个:
{ manufacturers: {} }
我不知道为什么它向我显示这个,但我怀疑它没有正确保存它。
解决方案
推荐阅读
- python - [0, 1) 在 Python 中是什么意思?
- mysql - SQL 大于或等于 (>=) 未正确返回
- python - 计算 pd.Series 中的每日平均值
- flutter - Flutter 开发的 App 出现问题,Sumsung Galaxy Note9 无法播放音频
- visual-studio-code - 执行从 VScode 调用外部 JAR 的空手道场景
- image - 提高图像的分辨率
- jquery-select2 - 当我使用 select2 创建动态下拉列表时,它会中断
- android - 当应用程序在 Android 和 iOS 上离开屏幕时执行代码
- cucumber - Cucumber 'Postground' 标签用于组合功能文件中所有场景的相同步骤
- ruby - 需要在perl中创建一个孤儿进程