Я пытаюсь выбрать данные из базы данных, поместить их в переменную массива и отправить на страницу ejs с помощью res.render, но в настоящее время я застрял с кодом.Код работает без проблем, но страница не перенаправляется.
Я пытался поместить 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 массивом модели автомобиля, к которому у меня есть запрос из базы данных.