node-mysql 如何多次查询

发布于 2022-08-28 12:27:58 字数 1376 浏览 40 评论 0

例如,mysql里有两个表:

tb_user: userId, userName
tb_userBook: userId, bookId, bookName   

想通过检索最终得到这样的结果:

[
  {
    "userId": 1,
    "userName": "张三",
    "userBook": [
      {
        "bookId": 1,
        "bookname": "书名1"
      },
      {
        "bookId": 2,
        "bookname": "书名2"
      }
      ...
    ]
  },
  {
    "userId": 2,
    "userName": "李四",
    "userBook": [
      {
        "bookId": 3,
        "bookname": "书名3"
      }
    ]
  }
  ...
]

如果是使用php的话,可以直接先获得所有tb_user的数据,然后遍历根据userId去搜索tb_userBook:

<?php
$info = array();

$userResult = mysql_query("SELECT * FROM tb_user");
if ($userResult) {
    while ($user = mysql_fetch_assoc($userResult)) {
        $bookInfo = array();
        $bookResult = mysql_query("SELECT * FROM tb_userBook WHERE userId={$user['userId']}");
        if ($bookResult) {
            while ($book = mysql_fetch_assoc($bookResult)) {
                array_push($bookInfo, $book);
            }
        }
        array_push($info, $bookInfo);
    }
}

echo json_encode($info);

//

但是node-mysql里面是异步回调,怎么在第一次检索完tb_user后循环获取相应的tb_userBook信息呢?

我尝试使用async模块来保持嵌套的次数,但碰到那个循环还是没办法下手....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

酒与心事 2022-09-04 12:27:58

我使用node-mysql模块是这样干的。
SELECT a.userId,a.userName,b.userBook,b.bookId from tb_user as a join tb_userBook as b on a.userId=b.userId;
然后把结果拼成自己想要的格式

夜血缘 2022-09-04 12:27:58

我昨天才搞懂,看这里

如何用Promise控制for循环的异步流程?(已解决)
https://cnodejs.org/topic/586...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文