Как отобразить возвращаемые значения оператора node-mssql с Jade?
У меня есть сервер Node.js с работающими Express и Jade. По 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 ответ
Вы получите 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)
,