繁体   English   中英

如何在 Node.JS 的一个函数中使用来自 MySQL 的响应?

[英]How to use responses from MySQL in one function with Node.JS?

我在 Node.JS 中有这个代码:

var mysql= require('mysql');

function first(){
var connection = mysql.createConnection({
  host     : 'xxxxx',
  user     : 'admin',
  password : 'xxxxx',
  database : 'xxxxx', 
  port     : 'xxxxx'
});

connection.connect();
connection.query('select*from test', function (error, results, fields) {
if (error) throw error;
  return results[0].num;
  });
}

function two(){
res = first();
console.log(res);
}

two();

我需要得到响应,但在控制台中显示未定义。 我该如何解决?

var mysql= require('mysql');
function first(){
return new Promise((resolve, reject) => {
var connection = mysql.createConnection({
  host     : 'xxxxx',
  user     : 'admin',
  password : 'xxxxx',
  database : 'xxxxx', 
  port     : 'xxxxx'
});
connection.connect();
connection.query('select*from test', function (error, results, fields) {
if (error) reject(error);
else
  resolve(results[0].num);
  });
});
}
function two(){
first().then((result) =>{
console.log(res);
}).catch((error) =>{
console.log(error);
});
}
two();

上面的代码应该可以工作。 您的代码显示未定义,因为您的 sql 查询正在发送回调,并且您在操作完成之前正在控制台记录它。 我使用了 promise,但您也可以使用 asyc/await 功能。 Promise 是一种优雅的回调函数编码方式,当涉及太多回调时,它将帮助您避免回调地狱。

暂无
暂无

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

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