pg.connect不是一个函数?

似乎有很多的文件(例如https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-node-js ,但也包括本网站),指出正确的方法与pg.js节点包使用pg.connect。 但是,我试图(在我的实际代码之前的问题之后)使用上述Heroku文档中显示的确切代码进行testing:

var pg = require('pg'); pg.defaults.ssl = true; pg.connect(process.env.DATABASE_URL, function(err, client) { if (err) throw err; console.log('Connected to postgres! Getting schemas...'); client .query('SELECT table_schema,table_name FROM information_schema.tables;') .on('row', function(row) { console.log(JSON.stringify(row)); }); }); 

我得到了错误信息“pg.connect不是一个函数”。 怎么回事,我该如何解决?

pg的新版本,即7.0.0,大约在15小时前发布(从我写这个的时候开始)。

这个版本有很多的变化,其中之一就是pg.connect已经被弃用了(换句话说就是删除了): pg.Pool(...).connect(...) https://node-postgres.com/guides/upgrading

连接的新方法如下所示:

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

许多旧的文档不会反映这些变化,所以他们使用的示例代码将不再工作。

您可以尝试重写示例代码,使其可以在7.0.0中运行,也可以显式安装仍然可以使用示例代码的旧版本:

 npm install pg@6 

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

pg.connect从版本6.3开始已被弃用

相反,还有另一种称为pool方法

这里是你如何可以快速设置node-postgres

 const pg = require('pg'); const express = require('express'); const app = express(); const config = { user: 'postgres', database: 'YOURDBNAME', password: 'YOURPASSWORD', port: 5432 }; // pool takes the object above as parameter const pool = new pg.Pool(config); app.get('/', (req, res, next) => { pool.connect(function (err, client, done) { if (err) { console.log("Peut pas se connecter a la 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'); }); 

请参阅: http : //www.javascriptpoint.com/nodejs-postgresql-tutorial-example/了解更多信息