Как отобразить возвращаемые значения оператора 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),

Другие вопросы по тегам