2016-10-07 3 views
0

Ich brauche Hilfe mit diesem, ich kann wirklich nicht knacken diese oben. Ich habe diese Website mit Node.js, um mySQL Abfragen aufzurufen und sie als Tabellen anzuzeigen, jedes auf seiner eigenen Seite. Um dies zu tun, habe ich 4 Objekte erstellt, die einen Namen, einen Titel und die Abfrage enthalten. Wenn ich diesen Code vier Mal (von queryPage[0] bis queryPage[3]) habe, funktioniert es großartig. Aber ich möchte es in eine for-Schleife schreiben, also brauche ich nicht 4 Wiederholungen der gleichen Zeilen, aber dann funktioniert es nicht. Die Seiten werden nicht geladen ... Hast du eine Idee, was passiert?senden Sie Daten an express.js in einer for-Schleife

connection.query(queryPage[0].query, function(err, rows) { 
    var arr = []; 
    for (var i in rows) { 
    arr[i] = rows[i]; 
    } 
    app.get('/' + queryPage[0].name, function(req, res) { 
    res.render('pages/' + queryPage[0].name, { 
     title: queryPage[0].title, 
     data: arr 
    }); 
    }); 
}); 
+0

Hows Code arbeiten? Ist es in einwandfreiem Zustand? – abdulbarik

+0

Wenn ich richtig verstehe, wenn Sie Ihre App starten, erhalten Sie Daten für jede Seite von db und richten Sie eine Route für sie ein, wenn eine Anfrage für eine der Routen kommt, die Sie den Zeilen dienen. Das heißt, wenn Sie Daten in db ändern, erhalten Sie immer noch alte Daten auf allen Seiten. Ist das korrekt? Ich meine, dass die meisten Leute DB abfragen würden, wenn die Anfrage hereinkommt, also erhalten Sie späteste Daten. – Molda

+0

Das ist interessant und ich habe nicht daran gedacht. Danke. Aber das ist nicht mein Problem. Ich versuche nur zu verstehen, warum dieser Code funktioniert, wenn ich es 4 Mal schreibe, aber nicht in einer for-Schleife – user3187759

Antwort

0

Ich glaube, Sie etwas mehr brauchen wie diese

var queryPage = [ ... ]; 
// This route catches all request 
app.get('/:name', function (req, res, next) { 
    // :name = req.params.name 

    var page; 
    for(var i = 0, l = queryPage.length; i < l; i++) 
     if(queryPage[i].name === req.params.name) { 
      page = queryPage[i]; 
      break; 
     } 

    // Check the page exists 
    if(!page) return res.status(404).send('Not found'); 
    // if(!page) return next(); 

    connection.query(page.query, function(err, rows) { 
     res.render('pages/' + page.name , { 
      title: page.title, 
      data: rows 
     }); 
    }); 
}); 
+0

Vielleicht (machen Sie es, definitiv) Ich bin Mangel an Wissen, aber ich verstehe nicht, wofür der ''/: name'' verwendet wird. Ich denke, dass dein Weg funktioniert, aber ich weiß nicht, wie ich es zu meinem Code konfiguriere ... – user3187759

+0

Wenn die Adresse example.com/etwas ist dann: Name ist * etwas * also req.params.name wird * etwas * sein – Molda

Verwandte Themen