pg.connect 不是函数?
pg.connect not a function?
似乎有很多文档(例如 https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-node-js,但也包括本网站在内的其他地方)表明连接 pg.js 节点包的正确方法是使用 pg.connect.但是,我尝试(在我的实际代码之前出现问题之后)使用上述 Heroku 文档中显示的确切代码进行测试:
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 is not a function"。这是怎么回事,我该如何解决?
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
以下是如何使用 express
轻松设置 node-postgres
。
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');
});
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 = 应用程序;
如果您想坚持使用已有的代码,可以使用旧版本的 Postgres。
首先申请:
npm uninstall postgresql
然后安装6.1.2版本(兼容你提到的代码):
npm install pg@6.1.2
似乎有很多文档(例如 https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-node-js,但也包括本网站在内的其他地方)表明连接 pg.js 节点包的正确方法是使用 pg.connect.但是,我尝试(在我的实际代码之前出现问题之后)使用上述 Heroku 文档中显示的确切代码进行测试:
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 is not a function"。这是怎么回事,我该如何解决?
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
以下是如何使用 express
轻松设置 node-postgres
。
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');
});
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 = 应用程序;
如果您想坚持使用已有的代码,可以使用旧版本的 Postgres。
首先申请:
npm uninstall postgresql
然后安装6.1.2版本(兼容你提到的代码):
npm install pg@6.1.2