nodejs mysql嵌套查询_nodejs+mysql嵌套查询的问题

博客讲述了在Node.js中处理MySQL嵌套查询时遇到的异步问题,以及两种有效的解决方案。第一种方法利用GROUP_CONCAT将商品信息拼接成字符串,第二种方法采用for循环和数组操作,结合异步处理,避免了异步问题导致的数据不完整。文章引用了腾讯云开发者社区和博客园的资源作为参考。
摘要由CSDN通过智能技术生成

2020.05.21记录小问题~

需求:返回所有分类,以及分类(id,name,img,desc...)下的所有商品(id,name,img)

最初想法:第一次执行sql拿到所有分类,第二次循环result,按每个分类ID执行sql获取对应的商品

现实:出现异步问题,第二次循环sql还没执行就res.json()了

怎么办呢,尝试了两种办法都有效的解决了问题!!

解决方案一:

通过mysql的 GROUP_CONCAT 来解决,把所有商品的详情拼装成string,每个商品之间用特定符号分隔,类似网络请求时url的参数拼接思路

解决方案二:

起初是考虑用async await异步实现,在一位评论区大佬那里受到了启发! 如下图

6d451f7704e8cc4d52b8973bbd88a811.png

突然想起来,join虽然会有很多行,看起来冗余,但是是可以通过node端处理掉成想要的格式的!

参考代码贴出来!

1     2 let categoryArr =[]3 for (var i =0; i item.category_id ===Cid)7 console.log(hasIndex)8 if (hasIndex !== -1) {9 categoryArr[hasIndex].products.push({10 product_id: result0[i].product_id,11 product_name: result0[i].product_name,12 main_img_url: result0[i].main_img_url13 })14 } else{15 categoryArr.push({16 category_id: result0[i].category_id,17 category_name: result0[i].category_name,18 description: result0[i].description,19 url: result0[i].url,20 products: [{21 product_id: result0[i].product_id,22 product_name: result0[i].product_name,23 main_img_url: result0[i].main_img_url24 }]25 })26 }27 }

参考自: https://cloud.tencent.com/developer/ask/185664  评论区!

原文:https://www.cnblogs.com/zhuxingqing/p/12933843.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值