¿Cómo renderizo los valores de retorno de una declaración node-mssql con Jade?
-
02-01-2020 - |
Pregunta
Tengo un servidor Node.js con Express y Jade ejecutándose.En una solicitud HTTP, el servidor ejecutará la siguiente función:
function home(req, res) {
res.render("site/index", {recordset: recordset}); //render the Jade template
}
Ahora me gustaría pasar una matriz a la variable de conjunto de registros anterior que puedo recorrer en Jade para completar un menú desplegable en mi página html.Recuperé la matriz deseada de esta manera:
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);
});
});
}
¿Cuál es una forma adecuada de ejecutar de forma asincrónica la consulta SQL y pasar el resultado posterior a mi plantilla Jade?
Solución
Tendrá res.render en la devolución de llamada de la consulta.
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
});
}
Tenga en cuenta que es posible que desee invocar su devolución de llamada de forma asíncrona, utilizando setImmediate
, también podría considerar que su devolución de llamada runSQLSelect utilice la práctica de nodo estándar de aceptar dos parámetros callback(err,data)
.