Comment puis-je rendre les valeurs de retour d'un nœud-mssql déclaration avec Jade?
-
02-01-2020 - |
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?
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)
.