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?