javascript - 如何将 Node mysql 查询存储在变量中?

标签 javascript mysql node.js asynchronous

我正在使用 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/

相关文章:

javascript - 基于 PHP 的大数据集表单自动完成

javascript - 将元素组属性加载为数组数组

php - parsererror : SyntaxError: JSON. 解析:JSON 数据第 2 行第 1 列出现意外字符 200 OK

javascript - 这是 JavaScript 原型(prototype)继承模型中的缺陷吗?

javascript - 单击按钮后刷新并重定向页面

php - Laravel Eloquent 效率

MYSQL 查询连接表

javascript - Crossroadsjs路由: how to use it?

node.js - 如何配置AWS EC2实例中的Nodejs以接受来自客户端的HTTPS请求

node.js - 如何使用cqrs模块在nestjs中进行查询?