亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按順序執行mysql查詢nodejs

按順序執行mysql查詢nodejs

12345678_0001 2023-05-11 16:27:05
我是 nodejs 的新手,正在使用它來構建帶有 mysql 數據庫的 api,并且遇到了無法按順序執行 mysql 查詢的問題。數據庫結構是三張表。表a與表b是一對多關系,表b與表c是一對多關系。我需要一個提供援助的 GET 端點,它返回一個結果,其中包含 b 的項目數組,其中嵌套了 c 的項目數組。示例結果:{ logcode: "",logmessage: "",bitems: [{bitemid: 1citems: [{ citemid: 1 } { citemid: 2 }]}{bitemid: 2citems: [{ citemid: 3 }]}]}目前我正在嘗試通過首先執行一個查詢來執行此操作,在該查詢中我檢索與實體 a 的接收鍵相對應的所有類型 b 的值,然后在結果上運行 foreach 循環并提取 bitem id,然后在其中運行另一個查詢foreach 循環獲取具有該特定外鍵的表 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;   }}使用這個函數,我能夠得到一個響應,其中包含與 aitemtoken 相關的所有 bitem,但沒有與每個單獨 bitem 相關的 citems。我想要一些關于如何執行第一個查詢然后根據它檢索到的響應執行后續查詢的幫助。
查看完整描述

1 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

根據您最后的評論,我相信您可以通過這樣做來實現它JOIN。有幾種方法可以做到這一點,但請考慮下面的示例:


SELECT * FROM owner o?

JOIN dogs d ON o.id=d.owner_id

JOIN dog_toys t ON d.id=t.dog_id

WHERE o.id=1;

假設您有 3 個表(owner、dogs 和 dog_toys),并且每個表都有一個owner.id=dogs.owner_id和的關系dogs.id=dog_toys.dog_id,您可以簡單地JOIN在一個查詢中將它們全部三個并修改返回的結果SELECT。

查看完整回答
反對 回復 2023-05-11
  • 1 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號