如何使用Jade呈现node-mssql语句的返回值?

时间:2014-04-14 17:00:37

标签: javascript node.js express pug node-mssql

我有一台运行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查询并将后续结果传递给我的Jade模板的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您将在查询回调中获得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回调使用标准节点接受两个参数callback(err,data)的做法。