我正在使用 Node mysql 连接到外部数据库,我可以 console.log
查询结果,但是当我尝试返回数据时,我得到 Promiseending
。
这是函数 -
export function get_info() {
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'xxxxxx',
user: 'bob',
port: 'xxxx',
password: 'bob',
database: 'li_webform'
});
connection.connect(function (err) {
if (err) throw err;
connection.query("SELECT Name FROM webform", function (err, result) {
if (err) throw err;
//console.log(result); **This works**
//console.log(result[0].Name);
return result;
});
});
}
我正在尝试设置一个等于返回值的变量,如下所示
var newVar = get_info();
console.log(newVar);
但我收到了 promise 待处理的票据。我相信这与 JavaScript 的异步特性有关。我尝试关注这篇文章How to properly return a result from mysql with Node?但无法让它工作。
这是我在该帖子之后尝试的内容
export function get_info(callback) {
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'xxxxx',
user: 'bob',
port: 'xxxxxx',
password: 'bob',
database: 'li_webform'
});
connection.connect(function (err) {
if (err) throw err;
connection.query("SELECT Name FROM webform", function (err, result) {
if (err) throw err;
//console.log(result);
//console.log(result[0].Name);
return callback(result);
});
});
}
然后我尝试通过使用它
var stuff_i_want = '';
get_info(function (result) {
stuff_i_want = result;
console.log(stuff_i_want);
});
但我没有得到任何输出
编辑**这是新的尝试
export function get_info() {
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'xxxx',
user: 'bob',
port: 'xxxxxx',
password: 'bob',
database: 'li_webform'
});
connection.connect(function (err) {
if (err) throw err;
connection.query("SELECT Name FROM webform", function (err, result) {
if (err) throw err;
//console.log(result);
//console.log(result[0].Name);
return result;
});
});
}
和第二部分
get_info().then((callbackData)=>{
console.log("Data: ", callbackData)
}).catch((error)=>{
console.log("Error", error)
});
最佳答案
该函数返回一个 promise 。你可以这样处理:
get_info().then((callbackData)=>{
console.log("Data: ", callbackData)
}).catch((error)=>{
console.log("Error", error)
});
关于javascript - 如何将 Node mysql 查询存储在变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53840186/