在Express.js中执行所有函数后渲染模板

时间:2014-06-30 12:22:37

标签: javascript node.js express

我有以下代码,当某人在索引页面上时会执行该代码

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

在查询甚至可以执行之前,模板似乎会被渲染,因为该值 在查询函数中是查询的结果,并且函数外部的查询结果是未定义的。如何才能在执行查询后渲染模板

1 个答案:

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