[英]Undefined when returning 'results' parameter from mysql query
尝试使用Node.js和Express从MySQL数据库向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;
});
控制台显示:
那么,如果我返回“结果”数组,为什么数据等于“未定义”? 我该如何解决这个问题?
我是 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.