首页 > 解决方案 > 在 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: {} }

我不知道为什么它向我显示这个,但我怀疑它没有正确保存它。

标签: javascriptnode.jsexpressecmascript-6handlebars.js

解决方案


推荐阅读