sql和node:如何运行三个不同的查询并逐个返回结果

30byixjq  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(271)

我一共有3个sql查询。我已经通过node.js完成了与数据库的连接。如何编写一个函数来帮助我逐个运行所有3个查询,并将结果作为json返回给前端。
这是我的密码。有没有更好的方法来调用查询as return,然后逐个调用。我正在为api使用post方法。

  1. var sqlquery=" "
  2. var sqlsecond=" "
  3. var sqlthird=" "
  4. mysqlConnection.query(sqlquery,(err,result)=>{
  5. if(err){
  6. console.log("Error"+err);
  7. }
  8. else{
  9. return response.json(result);
  10. }
  11. selectquery2(sqlsecond)
  12. selectquery3(sqlthird)
  13. })
  14. })
  15. function selectquery2(sqlquery1){
  16. mysqlConnection.query(sqlquery1,(err,result1)=>{
  17. if(err){
  18. console.log("Error"+err);
  19. }
  20. else{
  21. return response.json(result1);
  22. }
  23. })
  24. }
  25. function selectquery3(sqlquery2){
  26. mysqlConnection.query(sqlquery2,(err,result2)=>{
  27. if(err){
  28. console.log("Error"+err);
  29. }
  30. else{
  31. return response.json(result2);
  32. }
  33. })
  34. }
q3aa0525

q3aa05251#

你可以用 Promise 准备好所有3个结果,然后以json格式返回所有结果。例如

  1. router.get('/', async function(req, response){
  2. try{
  3. var sqlquery=" "
  4. var sqlsecond=" "
  5. var sqlthird=" "
  6. let result1 = await selectquery(sqlquery)
  7. let result2 = await selectquery(sqlsecond)
  8. let result3 = await selectquery(sqlthird)
  9. return response.json({result1:result1, result2:result2, result3:result3});
  10. }
  11. catch(err){
  12. response.status(500).end();
  13. }
  14. })
  15. async function selectquery(sqlquery){
  16. return new Promise((resolve, reject) => {
  17. mysqlConnection.query(sqlquery,(err,result)=>{
  18. if(err){
  19. reject(err);
  20. }
  21. else{
  22. resolve(result);
  23. }
  24. });
  25. });
  26. }
展开查看全部

相关问题