我正在使用带有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获得的数据
答案 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();
})
});