【问题标题】:Node.js & ejs, how to handle 2 tables?Node.js 和 ejs,如何处理 2 个表?
【发布时间】:2016-11-14 13:04:17
【问题描述】:

这是我需要回答的关于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 的内容。它按预期工作。

现在我的问题来了:

连同查询:'SELECT * FROM test_table' 我还想添加第二个查询:'SELECT * FROM other_test_table' 我希望能够在 test_table 之后(或之前)显示 other_test_table 的内容。 我需要如何更改这两个地方的代码?

【问题讨论】:

    标签: javascript node.js ejs


    【解决方案1】:

    你可以试试:

    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>
    

    希望对你有帮助。

    【讨论】:

    • 是的。正如人们所期望的那样,这确实根据您的建议有效。非常感谢。
    • 在花一些时间处理本文中的问题之后(同时)。我制作了自己的用例来练习使用 Node.js。由于其他人可能遇到同样的麻烦,我认为让访问我所做的事情可能很有用,希望它在某些时候对其他人有用。如果你有兴趣看看这里(primes-garden.herokuapp.com)。底部有一个供开发人员使用的链接(How That Works?)。
    猜你喜欢
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 2020-10-11
    • 2019-11-25
    • 1970-01-01
    相关资源
    最近更新 更多