有没有办法暂停map函数的迭代,以便我可以从我的查询中获得响应并将其存储在某个对象中。用多个mysql查询中的数据填充对象数组
所以我的数据是对象的数组,我想添加属性“接收器”为每一个对象数组,所以我通过我的阵列中使用的地图funtion循环,问题是在回调:d,我的对象reveive数据后我的快递公司发送了回复,所以我必须对Timeout进行适当的响应,但我知道它不是正确的解决方案,但现在可以工作,因为我在数据库中只有40-50条记录。
下面是代码:
data.map((x) => {
let sql = `
SELECT username
FROM message
JOIN message2user ON message.message_id = message2user.message_id
JOIN user on message2user.receiver_id = user.user_id
where message.message_id = ?;
`;
testDB.query(sql, x.message_id, (err, dataReceivers) => {
if (err) console.log(err);
x["receivers"] = dataReceivers;
})
});
setTimeout(() => {
res.json({ success: true, data: data });
}, 1000);
我使用快递为我的API路线和节点MySQL模块,也许我用前人的精力承诺或异步函数从节点,我不知道。
你有什么想法吗?
我建议重写你的SQL查询来处理一个查询中的整个数组,但如果你不想这样做,我会给你一个使用promise的建议。 –
嗯你是什么意思在一个查询整个数组?我需要有一个对象数组(对象是一些随机消息)和一些消息可以有多个接收器,我有表存储谁收到这条消息,但我不知道如何填充该对象与该阵列的惊人表格... @PatrickRoberts –