我是 nodejs 的新手,正在使用它來構(gòu)建帶有 mysql 數(shù)據(jù)庫的 api,并且遇到了無法按順序執(zhí)行 mysql 查詢的問題。數(shù)據(jù)庫結(jié)構(gòu)是三張表。表a與表b是一對多關(guān)系,表b與表c是一對多關(guān)系。我需要一個提供援助的 GET 端點,它返回一個結(jié)果,其中包含 b 的項目數(shù)組,其中嵌套了 c 的項目數(shù)組。示例結(jié)果:{ logcode: "",logmessage: "",bitems: [{bitemid: 1citems: [{ citemid: 1 } { citemid: 2 }]}{bitemid: 2citems: [{ citemid: 3 }]}]}目前我正在嘗試通過首先執(zhí)行一個查詢來執(zhí)行此操作,在該查詢中我檢索與實體 a 的接收鍵相對應(yīng)的所有類型 b 的值,然后在結(jié)果上運行 foreach 循環(huán)并提取 bitem id,然后在其中運行另一個查詢foreach 循環(huán)獲取具有該特定外鍵的表 c 的所有項目。async function (req, res) { let functionname = 'getAllItems' const conLocalPool = db.conLocalPool.promise(); var data = {} const atoken = req.get('token'); var str = ``; str = `call ${functionname}('${atoken}')`; console.log(str); try { const [rows, fields] = await conLocalPool.query(str) data = rows[0][0] if (data.logcode === 20100) { data.bitems = rows[1]; data.bitems.forEach(async (bitem) => { var stmt = `Select * from \`table-c\` where bitemid=${bitem.id}` try { const [citemrows, citemfields] = await conLocalPool.query(stmt); console.log(citemrows[1]) bitem.citems = citemrows[1]; return true; } catch (err) { console.log(err); return false; } }) } res.status(200).send(data); return true; } catch (err) { res.status(500).send({ error: err.message }); return false; }}使用這個函數(shù),我能夠得到一個響應(yīng),其中包含與 aitemtoken 相關(guān)的所有 bitem,但沒有與每個單獨 bitem 相關(guān)的 citems。我想要一些關(guān)于如何執(zhí)行第一個查詢?nèi)缓蟾鶕?jù)它檢索到的響應(yīng)執(zhí)行后續(xù)查詢的幫助。
按順序執(zhí)行mysql查詢nodejs
12345678_0001
2023-05-11 16:27:05