RowDataPacket返回空对象,但它不为空[Rreact/Next]



我一直在努力解决这个问题,结果把自己累坏了。我打电话给我的无服务器mysql,试图从团队获得看板。我已经使用过多次这种方法,所有方法都很好,但这很可能是因为它们只返回单个项目,而这会返回多个项目。

这是我的代码,它返回空对象。

async function getKanbans(team_id){
let kanbans = [];
await sql_query(`SELECT id, sName FROM table WHERE iTeam = ?`, [team_id])
.then(result => {
result.forEach(kanban => {
// console.log(kanban);
kanbans.push({
id: kanban.id,
name: kanban.sName
});
});
})
.catch(err => {
console.log(err);
});
console.log(kanbans);
return kanbans;
}

如你所见。。我正在尝试打印看板,我确实得到了:

[
{ id: 1, name: 'Kanban_1' },
{ id: 2, name: 'Kanban_2' }
]

然后我试图将它返回到调用该函数的项,这就是它的样子:

teams.push({
id : team.id,
sName : team.sName,
sColor : team.sColor,
aKanbans : result[0]['selectedTeam'] == team.id ? getKanbans(team.id) : null,
});

好吧,现在当我尝试查看(来自前端的(数据响应时,我得到了这个:

{
"success": true,
"message": "Found teams",
"teams": [
{
"id": 1,
"sName": "Team1",
"sColor": "#fcba03",
"aKanbans": {}
},
{
"id": 2,
"sName": "Team2",
"sColor": "#2200ff",
"aKanbans": null
}
]
}

aTeam1的看板是空的,空的对象。我该做什么?我试着映射它,但仍然得到了一个空对象。React/javascript不是我的主要语言,我只是喜欢学习。有什么建议吗?

您将async / await函数与普通Promises处理混合在一起。

尝试这样更改getKanbans代码:

async function getKanbans(team_id) {
let kanbans = [];
try {
const result = await sql_query(
`SELECT id, sName FROM table WHERE iTeam = ?`,
[team_id]
);
result.forEach((kanban) => {
kanbans.push({
id: kanban.id,
name: kanban.sName,
});
});
} catch (err) {
console.log(err);
}
return kanbans;
}

然后使用(声明父async(填充团队:

teams.push({
id : team.id,
sName : team.sName,
sColor : team.sColor,
aKanbans : result[0]['selectedTeam'] == team.id ? getKanbans(team.id) : null,
});

最新更新