我正在使用节点mysql连接到外部数据库,并且可以console.log
查询结果,但是当我尝试返回数据时,却得到Promise pending
。
这是函数-
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);
但是我得到了未完成的承诺。我相信这与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)
});
答案 0 :(得分:0)
该函数返回一个Promise。您可以这样处理:
get_info().then((callbackData)=>{
console.log("Data: ", callbackData)
}).catch((error)=>{
console.log("Error", error)
});