javascript - 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']], (err, 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',
sStateIcon: 'null',
bActive: 1,
iOrderID: 2,
sStageDesc: null,
Projects: []
}
]
非常感谢您提供的任何帮助或指导。
解决方案
推荐阅读
- oracle - Maven OSB (12.2.1.3) 问题
- typescript - 环回 4 - ER_BAD_FIELD_ERROR
- amazon-ec2 - 如何使用 PHP 7.2.13 在 Amazon Linux 上安装 Imap
- perl - Perl 中的 $x -> {_foo} -> {_bar} 是什么意思?
- python-3.x - 需要在 Pandas 中绘制直方图,使得 x 轴是分类的,y 轴是某些列的总和
- java - 这是将列表添加到另一个列表的好方法吗,如果源列表中没有值,则填充默认值
- javascript - Angular 7数组更改值
- python - 如何检测键盘输入以使用 python 播放声音?
- react-native - 使用 appium 检查器/UI automator 无法找到仅用于启动屏幕可见性/文本框的本机应用程序的 id
- excel - Power BI - 将一列中的值分配给新计算列中的新值