Uri: node.js express REST show-function

Beitrag lesen

Ok, vielen Dank. Hab mich da eingelesen und es soweit hinbekommen die seite mit pug zu bauen und habe da statt zwei requests nur einen einzigen request.

app.get("/buildings", function(req, res){
  var buildings=[];
  var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : '' 
  });
  connection.connect();
  var query = "SELECT * FROM re_manager.Gebaeude;"
  connection.query( query, function(err, rows, fields) {
    if (err) throw err;
    for(var i=0; i<rows.length; i++){
      var building=
        {
          "ID":rows[i].ID,
          "gesamte_Wohnflaeche":rows[i].gesamte_Wohnflaeche,
          "Baujahr":rows[i].Baujahr,
          "Strasse":rows[i].Strasse,
          "Strassennummer":rows[i].Strassennummer,
          "Postleitzahl":rows[i].Postleitzahl,
          "Stadt":rows[i].Stadt
        }
      buildings.push(building);
    }
  });
  res.render('index', {"buildings":buildings});
  connection.end();
});

wenn ich im Template jedoch console.log(buildings) rufe, wird auf der konsole ein leeres String angezeigt, was einerseits gut ist, weil ich den gewünschten array einerseits im template aufrufen kann, andererseits schlecht ist, weil er leer ist. Liegt es daran, dass node asynchron ist und wie kann man das umgehen?

Danke und Gruß

Uri