繁体   English   中英

从 mysql 查询返回“结果”参数时未定义

[英]Undefined when returning 'results' parameter from mysql query

尝试使用Node.jsExpressMySQL数据库向EJS发送数据,但在返回“结果”参数时显示错误:

function dbData(){
    connection.query('SELECT * FROM clients', (err, results, fields)=>{
        return results;
    });
}

路线:

app.get('/', (req, res)=>{
    let data = dbData(); 
    console.log(data);
});

当访问localhost:3000时,控制台显示:

不明确的

问题是当我控制台记录结果时:

connection.query('SELECT * FROM clientes', (err, results, fields)=>{
        console.log(results);
        return results;
    });

控制台显示:

数组控制台.log

那么,如果我返回“结果”数组,为什么数据等于“未定义”? 我该如何解决这个问题?

我是 Node.js 的新手,如果这太明显了,抱歉:(

At first glance, the documentation for mysql - a pure node.js JavaScript Client that implements the MySQL protocol, says in its very first topics that you should not return anything from connection.query() method.

这说,

function dbData(){
    connection.query('SELECT * FROM clients', (err, results, fields)=>{
        return results;
    });
}

应该没有任何return (或只是return;

function dbData(){
   connection.query('SELECT * FROM clients', function (error, results, fields) {
      if (error) throw error;
      console.log('The solution is: ', results);
    });
}

因此,当您执行console.log(data)时,您实际上是在打印 undefined 因为它不应该返回任何东西。 如果你想从查询中取出结果,你应该考虑使用回调。

function dbData(callback){
   connection.query('SELECT * FROM clients', function (error, results, fields) {
      if (error) throw error;
      callback(results);
    });
}

app.get('/', (req, res)=>{
    dbData(data => {
        console.log(data);
    }); 
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM