먼저 여러 개의 MySQL 쿼리 결과가 있는데 나머지는 단일 EJS 파일 (/ data)로 객체로 호출 할 수 있습니다.Node.js - 동일한 EJS 파일에 여러 객체 전달하기
나는 단지 첫 쿼리 결과 (OBJ)를 렌더링 한 후 나는 EJS에 호출 나머지 (rsum_total_sales & rsum_count_active)
처음 내가로드하는 것 같다을 프론트 엔드와 같은 500 오류가 발생하는 EJS 파일
rsum_total_sales is not defined
그러나 브라우저를 다시로드하면 경로 파일에서 얻은 필요한 결과를 모두 표시합니다.
처음에는 console.log()에서 3 개의 쿼리 결과가 모두 내가 만든 객체에 저장되어 있다는 것을 알 수 있습니다. 그러나 직접 렌더링하는 첫 번째 객체를 제외하고는 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>
프런트 엔드 오류 파일 (이 1 시간 인 경우에만 해당 브라우저에 EJS로드)
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'을 보내는 어디에 있는지 모릅니다. –