I am trying to learn how to use javascript to connect to a postgresql database but when I try to log a query to the console using query.on(...), I get a type error that says \"q
this is how it works for me :
var pg = require("pg");
var connectionString = {
user: 'user',
host: 'host',
database: 'db',
password: 'pass',
port: 5432,
};
var pool = new pg.Pool(connectionString);
pool.connect(function(err, client, done) {
const query = client.query(new pg.Query("SELECT * from products"))
query.on('row', (row) => {
console.log(row);
})
query.on('end', (res) => {
// pool shutdown
console.log("ending");
pool.end()
})
query.on('error', (res) => {
console.log(res);
})
done()
})
source : https://node-postgres.com/features/connecting
query.on
has been removed from node-pg 7.
See https://node-postgres.com/guides/upgrading for how to properly handle rows.
The usual way is to use promises or async/await (using promises in a clearer way):
await client.connect();
var res = await client.query("SELECT * FROM json_test");
res.rows.forEach(row=>{
console.log(row);
});
await client.end();
As Mentioned by Denys Séguret in Answer, the function query.on
is deprecated. And if you are a beginner and want to get a quick connection to try out your queries without being bothered by async/await functionality. You can try the below code:-
const { Pool, Client } = require('pg')
const connectionString = 'postgresql://dbuser:dbpassword@database.server.com:5432/mydb'
const pool = new Pool({
connectionString: connectionString,
})
pool.query('SELECT NOW()', (err, res) => {
console.log(err, res)
pool.end()
})