pg.connect not a function?

后端 未结 4 1727
梦谈多话
梦谈多话 2021-01-17 07:59

There appears to be a lot of documentation (e.g. https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-node-js, but also elsewhere including this site) indic

相关标签:
4条回答
  • 2021-01-17 08:36

    If you want to stick with the code you have you can use an older version of Postgres.

    First, apply:

    npm uninstall postgresql
    

    and then install version 6.1.2 (which is compatible with the code you mentioned):

    npm install pg@6.1.2
    
    0 讨论(0)
  • 2021-01-17 08:40

    A new version of pg, namely 7.0.0, was published about 15 hours ago (from the time I'm writing this).

    This version has lots of changes, one of them being that pg.connect has been hard-deprecated (in other words: removed) in favor of pg.Pool(...).connect(...), as documented here: https://node-postgres.com/guides/upgrading

    The new method of connecting looks like this:

    var pool = new pg.Pool()
    
    // connection using created pool
    pool.connect(function(err, client, done) {
      client.query(/* etc, etc */)
      done()
    })
    
    // pool shutdown
    pool.end()
    

    Lots of older documentation will not reflect these changes, so the example code they use won't work anymore.

    You can either try and rewrite the example code so it works in 7.0.0, or explicitly install an older version that will still work with the example code:

    npm install pg@6
    
    0 讨论(0)
  • 2021-01-17 08:40
    var express = require('express');
    var app = express();
    const pgp = require('pg-promise')();
    var connectionString = "";
    var parse = require('pg-connection-string').parse;
    
    try {
        var connectionString = "postgres://USERNAME:@localhost:5432/DBNAME";
        var config = parse(connectionString);
        config.password = "PASSWORD";
        var dbcon = pgp(config);
        app.set('dbCon', dbcon);
    } 
    catch (error) {
        console.log("DB error")
    } 
    

    module.exports = app;

    0 讨论(0)
  • 2021-01-17 08:52

    pg: postgresql => (https://www.npmjs.com/package/pg)

    ⚠️ pg.connect is deprecated since version 6.3 ❌

    BE CAREFUL : Instead there is another method called pool

    Here is how you can set up node-postgres easily with express.

    const pg        = require('pg');
    const express   = require('express');
    const app       = express();
    
    const config = {
        user: 'postgres',
        database: 'YOURDBNAME',
        password: 'YOURPASSWORD',
        port: 5432                  //Default port, change it if needed
    };
    
    // pool takes the object above -config- as parameter
    const pool = new pg.Pool(config);
    
    app.get('/', (req, res, next) => {
       pool.connect(function (err, client, done) {
           if (err) {
               console.log("Can not connect to the DB" + err);
           }
           client.query('SELECT * FROM GetAllStudent()', function (err, result) {
                done();
                if (err) {
                    console.log(err);
                    res.status(400).send(err);
                }
                res.status(200).send(result.rows);
           })
       })
    });
    
    app.listen(4000, function () {
        console.log('Server is running on port 4000');
    });
    
    0 讨论(0)
提交回复
热议问题