Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点Js变量不显示结果_Node.js - Fatal编程技术网

Node.js 节点Js变量不显示结果

Node.js 节点Js变量不显示结果,node.js,Node.js,我试图在变量中显示数据库值,但不返回任何值 下面是代码 var mssql = require('mssql'); var resultData=''; function getStyleData(){ var msSqlSettings = { server : 'localhost', port : '51663', user : 'sa', password : 'admin1234',

我试图在变量中显示数据库值,但不返回任何值

下面是代码

var mssql = require('mssql');
var resultData='';
function getStyleData(){    
  var msSqlSettings = {
     server      : 'localhost',
     port        : '51663',
     user        : 'sa',
     password    : 'admin1234',
     database    : 'ComWriter.Temp002'
};  
mssql.close();  
mssql.connect(msSqlSettings, function (err ) { 
    if (err) {
        throw (err);
    }   
    var getQuery = "SELECT [Title] FROM [dbo].[Templates] " ;   
    var request = new mssql.Request();          
    request.query(getQuery, function (err, rows) {          
        //console.log(rows);
        mssql.close();
        resultData = rows;
    });
}); 
   return resultData;
}




var getFunction = getStyleData();

   console.log(getFunction);
function getStyleData(callback) {
    var msSqlSettings = ..//;
    mssql.connect(msSqlSettings, function (err) {
        if (err) {
            callback("error message", null);
        }
        //query
        request.query(getQuery, function (err, rows) {

            resultData = rows;
            if (err) {
                callback("error message", null);
            } else {
                callback(null, resultDat);
            }
        });
    });
}



getStyleData(function (err, data) {

    if (err) {
        console.log("error");
    }

    console.log(data);
});

看起来您在调用connect之后返回resultData,可能是在连接建立之前,也可能是在query返回结果之前。节点是异步的,因此它不等待结果,请尝试在request.query调用中记录console.log行

mssql.connect(msSqlSettings, function (err ) { 
    if (err) {
        throw (err);
    }   
    var getQuery = "SELECT [Title] FROM [dbo].[Templates] " ;   
    var request = new mssql.Request();          
    request.query(getQuery, function (err, rows) {          
        //console.log(rows);
        mssql.close();
        console.log(JSON.stringify(rows));
    });
}); 
您可以将回调传递给getStyleData(),并将此回调传递给request.query(),这样,当查询完成时,行将异步返回。通过这种方式,您可以传入想要使用结果的回调

getStyleDate(done){
    // your code ...
    mssql.connect(msSqlSettings, function (err ) { 
        if (err) {
            throw (err);
        }   
        var getQuery = "SELECT [Title] FROM [dbo].[Templates] " ;   
        var request = new mssql.Request();          
        request.query(getQuery, done);
    }); 

}

不能以同步方式从回调(异步)返回数据

需要重构代码

var mssql = require('mssql');
var resultData='';
function getStyleData(){    
  var msSqlSettings = {
     server      : 'localhost',
     port        : '51663',
     user        : 'sa',
     password    : 'admin1234',
     database    : 'ComWriter.Temp002'
};  
mssql.close();  
mssql.connect(msSqlSettings, function (err ) { 
    if (err) {
        throw (err);
    }   
    var getQuery = "SELECT [Title] FROM [dbo].[Templates] " ;   
    var request = new mssql.Request();          
    request.query(getQuery, function (err, rows) {          
        //console.log(rows);
        mssql.close();
        resultData = rows;
    });
}); 
   return resultData;
}




var getFunction = getStyleData();

   console.log(getFunction);
function getStyleData(callback) {
    var msSqlSettings = ..//;
    mssql.connect(msSqlSettings, function (err) {
        if (err) {
            callback("error message", null);
        }
        //query
        request.query(getQuery, function (err, rows) {

            resultData = rows;
            if (err) {
                callback("error message", null);
            } else {
                callback(null, resultDat);
            }
        });
    });
}



getStyleData(function (err, data) {

    if (err) {
        console.log("error");
    }

    console.log(data);
});

可能存在msSqlSettings的副本,您可以记录msSqlSettings并告诉我您得到了什么吗?我尝试在回调中返回,但它不返回任何值。您好,我想返回值,而不是控制台日志。您能告诉我如何返回变量中的值吗?FROM getStyleData?