Come eseguire i valori di ritorno di un'istruzione Node-MSSQL con Jade?
-
02-01-2020 - |
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?
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)
.