我正在尝试从数据库中选择数据,并将其放入数组变量中,然后通过res.render发送到ejs页面,但是我目前仍停留在代码中。代码运行正常,没有问题,但是页面未重定向。
我试图将res.render放在for循环之外,并刷新页面几次。结果显示在页面上,但有些延迟。
我有2个涉及此代码的文件
第一个是Car.js,它创建一个查询函数以选择数据库中的数据。
exports.getAllPlateNumber = function(connection,username,Callback) {
var returnedValue = [];
var request = new Request(
'SELECT PlateNumber FROM dbo.Car WHERE Username = @username',
function(err, rowCount, rows) {
if (err) {
console.log(err);
connection.release();
returnedValue = null;
} else {
connection.release();
return Callback(returnedValue);
}
});
request.addParameter('username',TYPES.VarChar,username);
request.on('row', function (columns) {
columns.forEach(function(column) {
returnedValue.push(column.value);
});
});
connection.execSql(request);
}
exports.getCarModel = function(connection,platenumber, username,Callback) {
var returnedValue = [];
var request = new Request(
'SELECT CarModel FROM dbo.Car WHERE Username = @username AND PlateNumber = @platenumber',
function(err, rowCount, rows) {
if (err) {
console.log(err);
connection.release();
returnedValue = null;
} else {
connection.release();
return Callback(returnedValue[0]);
}
});
request.addParameter('username',TYPES.VarChar,username);
request.addParameter('platenumber',TYPES.VarChar,platenumber);
request.on('row', function (columns) {
columns.forEach(function(column) {
returnedValue.push(column.value);
});
});
connection.execSql(request);
}
第二个是Index.js,它将数据传递到ejs页面。
app.get('/home',loggedIn, function(req, res){
pool.acquire(function (err, connection) {
if (err) {
console.error(err);
connection.release();
}
car.getAllPlateNumber(connection,req.user[0],function(data){
currentPlateNumber = data;
})
});
// pool error memory
for(var i = 0;i<currentPlateNumber.length;i++){
pool.acquire(function (err, connection) {
if (err) {
console.error(err);
connection.release();
}
car.getCarModel(connection,currentPlateNumber[i],req.user[0],function(data){
currentModel[i] = data;
if(i == currentPlateNumber.length){
res.render('home', {currentModel:currentModel,currentPlateNumber: currentPlateNumber,currentUsername: req.user[0],currentPicture: currentPicture});
}
});
});
}
});
在home.ejs页面上,我显示currentModel数据以查看结果
<h3><Strong>Car Model : <%= currentModel %></Strong></h3>
从结果中我期望得到的是将currentModel变量填充为我从数据库中查询到的汽车模型的数组。