2016-11-14 6 views
0

Hier ist eine Frage über node.js, die ich beantworten muss. Da ich noch ein Anfänger auf dem Gebiet bin, kann es tatsächlich ziemlich einfach sein.Node.js & ejs, wie behandelt man 2 Tabellen?

eine Dokumentation Nach, die ich online gefunden habe ich diesen Code (in einer Datei mit dem Namen index.js):

app.get('/db', function (request, response) { 
    pg.connect(process.env.DATABASE_URL, function(err, client, done) { 
    client.query('SELECT * FROM test_table', function(err, result) { 
     done(); 
     if (err) 
     { console.error(err); response.send("Error " + err); } 
     else { 
     response.render('pages/db', {results: result.rows}); 
     } 
    }); 
    }); 
}); 

und ich habe auch diese andere Datei namens db.ejs:

<!DOCTYPE html> 
<html> 
<head> 
</head> 

<body> 

<div class="container"> 
<h2>Database Results</h2> 

<ul> 
    <% results.forEach(function(r) { %> 
     <li><%= r.id %> - <%= r.name %></li> 
    <% }); %> 
</ul> 

</div> 

</body> 
</html> 

Durch etwas Magie zwischen den beiden kann ich den Inhalt von test_table anzeigen. Es funktioniert wie man es erwarten würde.

hier kommt nun meine Frage:

Zusammen mit der Abfrage: 'SELECT * FROM test_table' ich auch eine zweite Abfrage hinzufügen möchten: 'SELECT * FROM other_test_table' und ich möchte in der Lage sein, den Inhalt von other_test_table nach (oder vor) dem von test_table anzuzeigen. Wie muss ich den Code an beiden Stellen dafür ändern?

Antwort

0

können Sie versuchen:

app.get('/db', function (request, response) { 
    pg.connect(process.env.DATABASE_URL, function(err, client, done) { 
     client.query('SELECT * FROM test_table', function(err, result1) { 
      if (err) { 
       done(); 
       console.error(err); 
       response.send("Error: " + err.message); 
      } else { 
       client.query('SELECT * FROM other_test_table', function(err, result2) { 
        done(); 
        if (err) { 
         console.error(err); 
         response.send("Error: " + err.message); 
        } else { 
         response.render('pages/db', { 
          results1: result1.rows, 
          results2: result2.rows 
         }); 
        } 
       }); 
      } 
     }); 
    }); 
}); 

und in db.ejs:

<!DOCTYPE html> 
<html> 
<head> 
</head> 

<body> 

<div class="container"> 
<h2>Database Results</h2> 

<ul> 
    <% results1.forEach(function(r) { %> 
     <li><%= r.id %> - <%= r.name %></li> 
    <% }); %> 
</ul> 

<ul> 
    <% results2.forEach(function(r) { %> 
     <li><%= r.id %> - <%= r.name %></li> 
    <% }); %> 
</ul> 

</div> 

</body> 
</html> 

Hoffe, es hilft.

+0

Ja. Das funktioniert in der Tat nach Ihrem Vorschlag, wie man es erwarten würde. Vielen Dank. – Michel

+0

Nach (und während) verbringen Sie etwas Zeit mit Problemen wie der in diesem Beitrag. Ich habe meinen eigenen Anwendungsfall gemacht, um etwas Übung mit Node.js zu bekommen. Da andere Leute die gleiche Art von Schwierigkeiten haben, dachte ich, es könnte nützlich sein, Zugang zu dem zu geben, was ich getan habe, in der Hoffnung, dass es irgendwann für jemand anderen nützlich sein wird. Wenn Sie interessiert sind, schauen Sie hier (https://primes-garden.herokuapp.com/). Es gibt einen Link an der Unterseite für Entwickler (Wie das funktioniert?). – Michel

Verwandte Themen