У меня есть несколько запросов к MySQL, где я визуализирую первый и сделаю вызываемыми остальные в один файл (/ данные) EJS как объекты.Node.js - Передача нескольких объектов в один и тот же файл EJS
оказывает только первых результатов запроса (OBJ), а затем я делаю все остальное вызываемого к EJS (rsum_total_sales & rsum_count_active)
Это кажется, что первый раз, когда я загружаю файл EJS я получаю фронтэнда 500 ошибок, как
rsum_total_sales is not defined
, но когда я перезагрузить браузер я получаю EJS к лоа ding fine, показывая все необходимые результаты, полученные из файла маршрута.
Странно, что даже в первый раз, в console.log() Я вижу, что все три результата запроса были помещены в объекты, которые я сделал, однако они не могут быть еще пригодны для EJS, кроме первых, которые непосредственно отображаются к нему.
От ошибки EJS я вижу, что он проходит первые результаты connection.query (OBJ), которая предоставляется, но не остальное два (rsum_total_sales & sum_count_active), которые я просто сделать их объекты отозваны, пока я не перезагрузить браузер.
файл маршрута
var obj = {};
var qsum_total_sales = 'SELECT SUM (total_price) AS s_total_price FROM myrecords';
var qsum_count_active = 'SELECT COUNT (*) AS s_count_active FROM myrecords WHERE NOT status = "canceled" ';
var qdata = 'SELECT * FROM myrecords';
router.get('/data', function(req, res){
connection.query(qdata, function(err, result) {
if(err){
throw err;
} else {
obj = {print: result};
res.render('data', obj);
console.log(obj);
}
});
connection.query(qsum_total_sales, function(err, rows, result) {
if(err){
throw err;
} else {
rsum_total_sales = JSON.parse(rows[0].s_total_price).toFixed(2);
console.log(rsum_total_sales);
//First time prints result but it can't be called to EJS until reloading EJS
}
});
connection.query(qsum_count_active, function(err, rows, result) {
if(err){
throw err;
} else {
rsum_count_active = JSON.parse(rows[0].s_count_active);
console.log(rsum_count_active);
//First time prints result but it can't be called to EJS until reloading EJS
}
});
});
EJS файл
<tbody>
<% print.forEach(function (datatable) { %>
<tr>
<td><%= datatable.id %></td
<td><%= datatable.full_name %></td>
//rest of loop
</tr>
<% }) %>
</tbody>
// some html code
<h4>Total sales sum is: <%- rsum_total_sales %></h4>
<h4>Total active records are: <%- rsum_count_active %></h4>
Frontend Ошибка (только тогда, когда это первый раз, когда Эйс загружает в браузер)
ReferenceError: C:\NodeJS\CRUD-1\views\data.ejs:39
37| </table>
38| <hr/>
>> 39| <h4>Total sales sum is: <%- rsum_total_sales %></h4>
40| <h4>Total active records are: <%- rsum_count_active %></h4>
rsum_total_sales is not defined
at eval (eval at <anonymous> (C:\NodeJS\CRUD-1\node_modules\ejs\lib\ejs.js:481:12),
<anonymous>:47:17)
at returnedFn (C:\NodeJS\CRUD-1\node_modules\ejs\lib\ejs.js:512:17)
at View.exports.renderFile [as engine] (C:\NodeJS\CRUD- 1\node_modules\ejs\lib\ejs.js:364:31)
at View.render (C:\NodeJS\CRUD-1\node_modules\express\lib\view.js:126:8)
at tryRender (C:\NodeJS\CRUD-1\node_modules\express\lib\application.js:639:10)
at EventEmitter.render (C:\NodeJS\CRUD-1\node_modules\express\lib\application.js:591:3)
at ServerResponse.render (C:\NodeJS\CRUD-1\node_modules\express\lib\response.js:960:7)
at Query._callback (C:\NodeJS\CRUD-1\routes\data.js:36:17)
at Query.Sequence.end (C:\NodeJS\CRUD-1\node_modules\mysql\lib\protocol\sequences\Sequence.js:86:24)
at Query._handleFinalResultPacket (C:\NodeJS\CRUD-1\node_modules\mysql\lib\protocol\sequences\Query.js:144:8)
я не вижу, где вы посылаете '' rsum_total_sales' и rsum_count_active' в веб-интерфейсе. –