데이터 router.get에 외부 함수를 호출하고 렌더링 function()
안에 router.get
그래서 EJS 또는 다른 템플릿 엔진을 통해 쿼리 출력을 렌더링 할 수 있습니까?ExpressJS는 - 내가이를 호출 할 수 있습니다 어떻게 <code>router.get</code></p> <p>내부 쿼리 기능을하는 대신 내보기에 MySQL의 쿼리 데이터를 렌더링하기 위해 함수를 호출 할 필요가
하는 index.js
function fdb(mypar) {
obj = {}
con.query(mypar, (err, rows) => {
if (err) throw err
obj = rows[0]
console.log(obj)
//rows data fetching OK using stored procedure get_all_1 when route '/' is called
})
}
/* GET home page. */
router.get('/', function(req, res, next) {
fdb('CALL get_all_1')
console.log(obj) // {}
to_render = { print: obj }
console.log(to_render) // { print: {} }
res.render('index', to_render);
//it obviously cannot render anything
//GET/500
});
index.ejs
<% print.forEach(function (qdata) { %>
<tr>
<td>
<%= qdata.name %>
</td>
<td>
<%= qdata.location %>
</td>
</tr>
<% }) %>
나는 내가 router.get
내부 fdb()
기능을 통해 전화를 할 때 그 obj
이 범위를 벗어나 얻을 어떻게 든 understannd하지만, 해당 범위를 조작하는 방법을 알 수 없습니다.
@Cadmos 마크 대답. –
@ jfriend00 이것은 그의 질문에 대한 대답이 아닙니다. 'let'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 당신은 실제로 그에게 그 자신을 해결하라고 말합니다! – Vasikos
@ Vasikos - 질문에 대한 대답이라고 생각하면 실제 답변에 넣었을 것입니다. OP는 서버 기반 비동기 코드에서 선언되지 않은 변수를 사용하고 있습니다. 그건 재앙을위한 처방입니다. 버그를 일으킬 수있는 코드가 잘못되어'var','let' 또는'const'로 선언해야합니다. 나는 그들을 고쳐야한다고 교육시키고 있었다. 변수 선언 문제가 답이라고 말할 수는 없습니다. 반면에 필자가 참조한 링크는'fdb()'에서 무엇이 잘못되었는지를 설명하고 그들이해야 할 일인 비동기 결과를 반환하는 방법을 설명합니다. – jfriend00