Domanda

Ho un server Node.js con Express e Jade in esecuzione.Su una richiesta HTTP il server eseguirà la seguente funzione:

function home(req, res) {

  res.render("site/index", {recordset: recordset}); //render the Jade template
}
.

Ora vorrei passare in un array alla variabile di recordset di cui sopra che posso loop attraverso la giada per popolare un ascensore sulla mia pagina HTML.Ho recuperato la matrice desiderata come:

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);
        });
      });
}
.

Qual è un modo corretto per eseguire asincronizzare la query SQL e passare il risultato successivo nel mio modello di giada?

È stato utile?

Soluzione

Avrai il Res.Render nel callback dalla query.

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
  });
}
.

Nota, è possibile che la richiamata richiamata in una moda async, utilizzando setImmediate, potresti anche prendere in considerazione la possibilità di avere la tua callback RunsqlSelect effettiva l'utilizzo della pratica del nodo standard di accettare due parametri callback(err,data).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top