问题描述
我在尝试将查询结果添加到对象中时遇到问题。我是 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 (将#修改为@)