node-mysql 如何多次查询
例如,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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我使用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;
然后把结果拼成自己想要的格式
我昨天才搞懂,看这里
如何用Promise控制for循环的异步流程?(已解决)
https://cnodejs.org/topic/586...