我有以下代码,当某人在索引页面上时会执行该代码
exports.index = function(req, res){
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'tZAz6M'
});
connection.connect();
connection.query("USE BlogDB");
var network;
function query(sql, callback) {
connection.query(sql, function(err, rows) {
if (err) {
callback(err, null);
} else {
callback(rows);
}
});
}
query("SELECT * FROM TestTabelle", function(results){
network = results;
console.log("inside the query function " + network);
});
connection.end(function(err){});
console.log("outside the query function " + network);
res.render('index.hjs', { Mysql : network });
}
在查询甚至可以执行之前,模板似乎会被渲染,因为该值 在查询函数中是查询的结果,并且函数外部的查询结果是未定义的。如何才能在执行查询后渲染模板?
答案 0 :(得分:1)
将res.render
放在回调中:
query("SELECT * FROM TestTabelle", function(results){
network = results;
console.log("inside the query function " + network);
res.render('index.hjs', { Mysql : network });
});