這個問題在這里已經有了答案: 如何從異步呼叫中回傳回應 42 個回答 3天前關閉。
我不知道問題出在哪里,我知道標題并沒有描述我對此的任何道歉。這是我面臨的問題。我目前正在使用 MERN 應用程式。
我有一條快遞路線,我從兩個表中請求資料庫中的一些資料。
playlist.post("/getplaylistSongs", (req, res) => {
const { cookie } = req.body;
const sql = "SELECT * FROM playlist WHERE user_id = ?";
dbCon.query(sql, [cookie], (err, result) => {
if (err) {
res.status(400).json({
message: "failed to get playlist details ",
});
} else {
let playlistSongs = [];
result.forEach((element, index) => {
const audio_id = element.audio_id;
dbCon.query(
"SELECT * FROM audios where video_id = ?",
[audio_id],
(err, song) => {
if (err) {
res.status(400).json({
message: "failed to get music",
});
} else {
playlistSongs.push(song);
}
});
});
console.log(playlistSongs);
res.status(200).json({
playlist: playlistSongs,
});
}
});
});
但是這里的問題是我嘗試這樣做我總是得到playlistSongs一個空陣列。謝謝。評論糾正問題。
編輯:現在我知道問題與 javascript 的執行有關。
uj5u.com熱心網友回復:
嘗試async / await:
playlist.post('/getplaylistSongs', async (req, res) => {
const { cookie } = req.body;
const sql = 'SELECT * FROM playlist WHERE user_id = ?';
try {
const result = await dbCon.query(sql, [cookie]);
let playlistSongs = [];
result.forEach(async (element, index) => {
const audio_id = element.audio_id;
const song = await dbCon.query(
'SELECT * FROM audios where video_id = ?',
[audio_id]
);
playlistSongs.push(song);
});
console.log(playlistSongs);
res.status(200).json({
playlist: playlistSongs,
});
} catch (e) {
res.status(400).json({
message: 'failed to get playlist details ',
});
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/428892.html
標籤:javascript 节点.js 表示 范围
