Node.js& ejs,如何处理2个表?

时间:2016-11-14 04:19:34

标签: javascript node.js ejs

以下是我需要回答的关于node.js的问题。 由于我还是该领域的初学者,实际上可能很容易。

根据我在网上找到的一些文档,我有这个代码(在一个名为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} ); 
      }
    });
  });
});

我还有另一个名为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>

通过两者之间的一些魔术,我可以显示test_table的内容。它可以像人们期望的那样工作。

现在我的问题出现了:

与查询一起:&#39; SELECT * FROM test_table&#39; 我还想添加第二个查询:&#39; SELECT * FROM other_test_table&#39; 我希望能够在test_table之后(或之前)显示other_test_table的内容。 为什么我需要在这两个地方更改代码?

1 个答案:

答案 0 :(得分:0)

您可以尝试:

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

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>

希望它有所帮助。