我有一个节点。运行Express和Jade的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模板的正确方法?

有帮助吗?

解决方案

您将在来自查询的回调中获得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).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top