我有一台运行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模板的正确方法是什么?
答案 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)
的做法。