문제

Express 및 jade 실행 중에 Node.js 서버가 있습니다.서버가 다음 함수를 실행할 HTTP 요청에서 다음 기능을 실행합니다.

function home(req, res) {

  res.render("site/index", {recordset: recordset}); //render the Jade template
}
.

이제는 JADE에서 HTML 페이지의 드롭 다운을 채울 수 있도록 위의 레코드 집합 변수에 배열을 전달하고 싶습니다.원하는 배열을 다음과 같이 검색했습니다.

function runSQLSelect() {
      sql.connect(config.db, function(err) {
      var request = new sql.Request();
      request.query("select MyColumn FROM MyTable", function(err, recordset) {
        console.log(recordset);
        });
      });
}
.

SQL 쿼리를 비동기 적으로 실행하고 이후의 결과를 내 옥 템플릿으로 전달하는 적절한 방법은 무엇입니까?

도움이 되었습니까?

해결책

쿼리에서 콜백에 res.render가 있습니다.

function runSQLSelect(callback) {
      sql.connect(config.db, function(err) {
      var request = new sql.Request();
      request.query("select MyColumn FROM MyTable", function(err, recordset) {
        console.log(recordset);
        callback(recordset);
        });
      });
}

function home(req, res) {
  runQSQLSelect( function(result) {
      res.render("site/index", {recordset: result}); //render the Jade template
  });
}
.

콜백을 비동기 방식으로 콜백을 호출 할 수 있습니다. setImmediate를 사용하여 RunSQLSelect 콜백을 사용하여 두 개의 매개 변수를 수락하는 표준 노드 연습을 사용하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top