내가 생성 된 프로세스의 출력을 수집 어디 백엔드 NodeJS 코드가 :NodeJS 익스프레스 - 페이지 업데이트를 렌더링 자동으로
schild.stdout.on('data', function (data) {
var result = data.toString().split("\n");
for(var i = 0; i < result.length; i++)
{
var n = result[i].split("|");
if(n.length == 4)
{
var date = n[0];
var category = n[1];
var component = n[2];
var condition = n[3];
response.push({Date : date, Category : category, Component : component, Condition : condition});
}
}
logger.info('Rendering : ' + response.length);
res.render('viewpage', {status:0, msg:'Success', responsedata:response});
을});
내 viewpage.ejs 파일은 코드 아래에 있습니다
var oTable = $('#example').dataTable({"bDestroy" : true, "bUseRendered": false, "bSort" : false, "bPaginate" : true, "bDeferRender": true, "iDisplayLength" : 27});
var status = <%= status %>;
if(status == 2)
{
alert('<%= msg %>');
}
if(status == 0)
{
<% for(var i =0; i < responsedata.length; i++){ %>
$('#example').dataTable().fnAddData(['<%= responsedata[i].Date %>', '<%= responsedata[i].Category %>' , '<%= responsedata[i].Component %>', '<%= responsedata[i].Condition %>']);
<% } %>
oTable.fnDraw();
}
});
문제는 페이지가 'res.render'에 대한 첫 번째 호출에 대해서만 렌더링됩니다 있다는 것입니다하지만 난 더 출력과 함께 페이지를 업데이트 할 'schild.stdout.on'이벤트에서 캡처 됨. 내 logger statement 내에서 처음으로 응답 배열의 길이는 0이지만 올바르지 만 나중에 유효한 데이터를 가져 와서 뷰로 렌더링한다는 것을 알 수 있습니다. 그러나 페이지는 최신 데이터로 업데이트되지 않습니다. 페이지가 한 번만로드되고 페이지에서 더 이상 업데이트가 발생하지 않습니까?