0

我有一个运行 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 模板的正确方法是什么?

4

1 回答 1

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)

于 2014-04-14T22:03:02.853 回答