【问题标题】:MySQL array within function not returning?函数内的MySQL数组不返回?
【发布时间】:2021-04-08 04:20:07
【问题描述】:

我正在使用一个函数从多个 MySQL 表中收集数据以构建将返回的数组。我不知道为什么,但是当我返回以下代码时,我得到了undefined,尽管当我使用console.log 时,所有数据都正确显示?我不确定这是否是由于 return 语句比 MySQL 语句快,但我假设 Node 会等到所有 SQL 语句都完成后再返回?任何建议都会很棒。

function testfunction(){
    
  let variable = "false",
      variable2 = "false";


  connection.query("SELECT COUNT(*) AS rowCount FROM `users`;",[], function (error, rows, fields) {
      if (error) {console.log(error);}
      let users = rows[0].rowCount;

      connection.query("SELECT COUNT(*) AS rowCount FROM `towns`",[], function (error, rows, fields) {
          if (error) {console.log(error);}
          let towns = rows[0].rowCount;

          let array = {
              "data":{
                  "users":users,
                  "towns":towns,
                  "variable1":variable,
                  "variable2":variable2
              }
          };
          console.log(array)
          return array;
      });
  });
};

输出:
返回输出

undefined

console.log 输出

{ data:
   { towns: 1, users: 1, variable1: 'false', variable2: 'false' } }

提前感谢您的帮助,这不是我以前遇到过的问题,我很想知道我做错了什么:)

【问题讨论】:

标签: javascript mysql node.js function


【解决方案1】:

嗨,我可以看到您使用嵌套方法进行查询。我建议使用async/await 让它变得更好。 试试下面的方法。

let variable = "false", variable2 = "false";
const users = await connection.query( 'SELECT COUNT(*) AS rowCount FROM `users`' );
const towns = await connection.query( 'SELECT COUNT(*) AS rowCount FROM `towns`' );
let array = {
              "data":{
                  "users":users,
                  "towns":towns,
                  "variable1":variable,
                  "variable2":variable2
              }
          };
console.log(array)

【讨论】:

  • 感谢您的快速回复,我从未接触过异步函数,所以我想现在是我学习的时候了。我以前也从未进行过这样的查询,我该如何从查询中提取信息?通常我会做我在上面的代码rows[0].rowCount中所做的事情。因为我实际上无法构建数组,所以我还没有尝试过,但是 Visual Studio 在“等待”上吐出一个错误,说它对这个表达式没有“影响”?我已经把“异步”放在函数前面(只是假设我以前从未这样做过)。任何支持将不胜感激,喜欢学习新事物 XD,再次感谢
  • 如果直接return语句,则不需要放置await。 Ex function testfunction(){ return connection.query('SELECT COUNT(*) AS rowCount FROM towns') }
猜你喜欢
  • 2019-10-30
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-07
  • 2013-08-02
  • 1970-01-01
相关资源
最近更新 更多