javascript - 如何将Node mysql查询存储在变量中?
问题描述
我正在使用节点 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 的异步特性有关。我试过关注这篇文章如何使用 Node 正确返回 mysql 的结果?但无法让它工作。
这是我在该帖子之后尝试的
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)
});
解决方案
该函数返回一个承诺。你可以这样处理:
get_info().then((callbackData)=>{
console.log("Data: ", callbackData)
}).catch((error)=>{
console.log("Error", error)
});
推荐阅读
- android - 如何在 MPAndroidChart 库中将圆的 PieChart 向右移动?
- java - Android Studio Selenium WebDriver 不存在
- python - 在我实际点击之前调用“Button_Press_Event”坐标
- python-3.x - Python 列表中的乘法
- css - 在嵌套的 SCSS 结构中使用类或数据选择器定位根元素
- svg - svg 格式不被接受且不可读 { 预期
- json - 使用 jq 创建 JSON 对象/字典
- excel - 批量打开超链接每个链接打开两次
- express - Model.aggregate, $filter 即使条件为空
- python-3.x - 如何比较嵌套列表的元素?