Question

J'ai un Node.js serveur avec l'Express et de Jade en cours d'exécution.Sur une requête HTTP, le serveur va exécuter la fonction suivante:

function home(req, res) {

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

Maintenant, je voudrais passer un tableau à la variable de jeu d'enregistrements que je peux faire une boucle par Jade pour remplir une liste déroulante sur ma page html.J'ai récupéré le tableau désiré comme suit:

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

Ce qui est une bonne façon asynchrone exécuter la requête SQL, et de transmettre le résultat qui en découle dans mon modèle Jade?

Était-ce utile?

La solution

Vous aurez la res.rendu dans le rappel de la requête.

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

Remarque, vous pouvez avoir votre rappel invoquées dans un mode asynchrone, à l'aide de setImmediate, vous aussi pourriez envisager d'avoir votre runSQLSelect rappel de faire usage de la norme nœud de la pratique de l'acceptation de deux paramètres callback(err,data).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top