Warm tip: This article is reproduced from stackoverflow.com, please click
node.js

save data from database (sql server) into a global variable using nodejs

发布于 2020-03-27 10:27:27

I'm trying to save data from database into a global variable to use it in an other script

I'm using sqlServer and nodejs

var sql = require("mssql");
const config   = {
    server : "",
    database : "",
    user : "",
    password : "",
};

var table = [];

function getCord() {
    // Create instence of connection
    var conn = new sql.ConnectionPool(config);
    var req = new sql.Request(conn);
    // Connecting to database
    conn.connect(function(err){
        if(err){
            console.log(err);
            return;
        }
        // Getting result
        var queryString = "SELECT * FROM  XXXX";
        req.query(queryString, function(err, recordset){
            if(err){
                console.log(err)enter code here;
                return;
            }
            else{
                //console.log(JSON.stringify(recordset));
                table = recordset;
            }
            conn.close();
        });
    });
    console.log(JSON.stringify(table));
}
getCord();

this is what I'm getting as result

C:\Users\Lara\Desktop\soap_examp\nodejs>node connect.js []

Questioner
Lara
Viewed
34
ItsMyLife 2019-07-03 23:17

You have created a synchronous function and your query to the database is asynchronous. So when console.log is raised your req.query still is pending. You can do something like this

   function getCord() {
       return new Promise((resolve, reject) => {
           // Create instence of connection
           var conn = new sql.ConnectionPool(config);
           var req = new sql.Request(conn);
           // Connecting to database
           conn.connect(function(err){
               if(err){
               console.log(err);
                  return;
            }
            // Getting result
            var queryString = "SELECT * FROM  XXXX";
            req.query(queryString, function(err, recordset){
                if(err){
                    console.log(err)enter code here;
                    return;
                }
                else{
                    //console.log(JSON.stringify(recordset));
                    table = recordset;
                }
                conn.close();
                resolve(true);
            });
         });
    });
}
getCord().then(() => console.log(table));