NODE.JS、Express、mySQL2:在另一个对象中附加一个对象的问题

问题描述

我在尝试将查询结果添加到对象中时遇到问题。我是 Node 和 Express 的新手,所以如果我犯了一些愚蠢的错误,我深表歉意。当我试图让它工作时,我一直在阅读文档和观看视频。异步对我的大脑来说仍然很奇怪,所以我确定我做错了,我放置的函数似乎是错误的,我非常感谢你知道的任何视频或文章也可以帮助我理解哈哈!

基本上我有一个叫做阶段的表,用户可以在其中添加删除阶段。我正在拉动所有阶段,然后尝试将属于这些阶段的项目添加为对象数组。

好的,代码如下:

var myStages = []; //Global variable to hold stages.

//Get all the Stages
app.get('/',(req,res) => {

    pool.getConnection((err,connection) => {
        if(err) throw err;
        console.log(`Connected as ID ${connection.threadId}`);

        //Query
        connection.query('SELECT * FROM solarcrm_stages',(err,rows) => {
            connection.release();

            if(!err) {
                getProjects(rows);
            } else {
                console.log(err);
            }
        })
        function getProjects(stages) {
            myStages = stages;

            Object.entries(myStages).forEach(entry => {
                const[key] = entry;

                connection.query('SELECT * FROM project WHERE iProjectStage = ?',[myStages[key]['iStageID']],rows) => {
                    connection.release();

                    if(!err) {
                        myStages[key]['Projects'] = rows;
                        console.log(myStages);     //Projects shows up as 'Projects: [ [TextRow] ]'            
                    } else {
                        console.log(err);
                    }
                });
            });
        }
    })
})

我得到的当前结果是,第 1 阶段有项目应该出现但显示 [TextRow],第 2 阶段应该是空的:

[

TextRow {

iStageID: 1,sstageName: 'Stage1',sstateIcon: 'null',bActive: 1,iOrderID: 1,sstageDesc: null,Projects: [ [TextRow] ]

},TextRow {

iStageID: 2,sstageName: 'Stage 2',iOrderID: 2,Projects: []

}

]

非常感谢您提供的任何帮助或指导。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)