質問

ExpressとJade Runningを搭載したNode.jsサーバーを持っています。HTTPリクエストでは、サーバーは次の機能を実行します。

function home(req, res) {

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

今度は、JADEでループすることができる上記のRecordSet変数に配列を渡したいと思います。

のように目的の配列を取得しました。
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クエリを非同期的に実行し、その後の結果をJADEテンプレートに渡すための適切な方法は何ですか?

役に立ちましたか?

解決

Queryからのコールバックに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を使用して、Asyncファッションでコールバックを呼び出すことをお勧めします。これも、RunSQLSelectコールバックを使用すると、2つのパラメータcallback(err,data)を受け入れる標準ノード慣行を使用しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top