如何在Postgress数据库中运行搜索,返回结果,然后将其发送到ejs页面上显示?

时间:2019-01-06 22:10:25

标签: node.js postgresql heroku

我正在使用带有Heroku和Postgres的Node.js 我的代码需要从Postgres中提取数据,存储该数据,然后将该数据发送到要显示的网页。

代码如下所示。我想从中获取信息 SELECT * FROM people;,然后我想以某种方式存储它,然后我想res.render将其存储到“ pages / sql”上。 因此,当我访问myURL.com/sql时,将看到从数据库中获得的结果的字符串化版本。到目前为止,当我运行heroku logs --tail时,可以在控制台中看到此信息,但我希望将其呈现在任何人都可以看到的实时网页上。

理想情况下,我希望能够做更多的事情,但这暂时会有所帮助。

通过做更多的事情,我想最终找到如何拥有完整的ejs网页,并将大量数据从db中提取到一页上,而不是仅对一张表使用res.render。

const { Client } = require('pg');
const client = new Client({
    connectionString: process.env.DATABASE_URL,
    ssl: true,
});
app.get('/sql',function(req,res){ 
  res.status(200);
  client.connect();
  client.query('SELECT * FROM people;', (err, res) => {
    if (err) throw err;
    for (let row of res.rows) {
      console.log(JSON.stringify(row));
    }
    client.end();
  })
  res.render('pages/sql', {body:"HELLO"});
});

理想情况下,它显示HELLO,我将发送从字符串化JSON获得的数据

1 个答案:

答案 0 :(得分:0)

因此您必须在得到结果后发送响应,因此您应该执行类似的操作

 app.get('/sql',function(req,res){ 
   res.status(200);
   client.connect();
   client.query('SELECT * FROM people;', (err, res) => {
     if (err) throw err;
     for (let row of res.rows) {
       // If you want to get the single row
       res.render('pages/sql',JSON.stringify(row));
       console.log(JSON.stringify(row));
     }
     // if you want all rows return then
     res.render('pages/sql',JSON.stringify(res.rows));
   client.end();
   })
});