query.on is not a function

前端 未结 3 1597
梦谈多话
梦谈多话 2021-02-13 11:48

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

相关标签:
3条回答
  • 2021-02-13 12:15

    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

    0 讨论(0)
  • 2021-02-13 12:31

    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();
    
    0 讨论(0)
  • 2021-02-13 12:32

    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()
    })
    
    0 讨论(0)
提交回复
热议问题