我想将查询返回的结果保存在变量中,并在另一个函数中使用它

时间:2019-11-24 19:23:18

标签: javascript node.js

var data;
function initM(){
    var mysql = require('mysql'); 
    
    var con = mysql.createConnection({
        host: "localhost",
        user: "root",
        password: "",
        database:"ns2"
      });

      sql="SELECT id,first_name,last_name from stu_details";
      con.connect(function(err) {
      
        if (err) throw err;
        console.log("Connected!");
       con.query(sql,function (err, result) 
        {if (err) throw err;
        data=result;//----> I want to save the returned result from the query in "data"
        console.log(result);//--> prints the data of query
        });
        });
}


console.log(initM());
console.log(data);//--> prints "undefined"

我想将查询返回的结果保存在一个变量中,并在另一个函数中使用它。 打印“未定义” 坦克!

1 个答案:

答案 0 :(得分:0)

您正在使用异步功能(例如con.query)。这意味着查询结束时将存储您的数据。同时,您的代码继续。

您可以使用promise和async函数来解决此问题。

var data;
async function initM() {
    return new Promise((resolve) => {
        var mysql = require('mysql');

        var con = mysql.createConnection({
            host: "localhost",
            user: "root",
            password: "",
            database: "ns2"
        });

        sql = "SELECT id,first_name,last_name from stu_details";
        con.connect(function (err) {

            if (err) throw err;
            console.log("Connected!");
            con.query(sql, function (err, result) {
                if (err) throw err;
                data = result;//----> I want to save the returned result from the query in "data"
                console.log(result);//--> prints the data of query
                // now the variable is set
                resolve();
            });
        });
    });
}

async function start() {
    await initM();
    console.log(data);//--> should print your data
}
start();