我刚开始学习nodejs-postgres并找到了pg-promise包裹.我阅读了文档和示例,但我不明白我应该在哪里放置初始化代码?我使用Express,我有很多路线.
我必须将整个初始化(包括pg-monitorinit)放到我想要查询db的每个文件中,或者我只需要initalize/configure在server.js中包含它们?
如果我只在server.js中初始化它们应该包含哪些我需要db查询的文件呢?
换一种说法.我不清楚pg-promise和pg-monitor configuration/initalization是全局还是本地行动?
我还不清楚是否需要为每个查询创建一个db变量并结束pgp?
var db = pgp(connection);
db.query(...).then(...).catch(...).finally(**pgp.end**);
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习如何使用javascript连接到postgresql数据库但是当我尝试使用query.on(...)将查询记录到控制台时,我得到一个类型错误,上面写着"query.on不是功能".我已经广泛搜索了如何解决这个问题,但似乎无法找到关于.on函数的任何文档.我知道连接成功,因为当我从终端查询数据库时,添加了两个新行.
jsontest.js
var pg = require('pg');
var conString = "postgres://[username]:[password]@localhost:5432/VONKTA1";
//username and password masked
var client = new pg.Client(conString);
client.connect();
client.query("INSERT INTO json_test (name, attributes) VALUES ('Ted', $1)", [{"age": 2, "gender": "M"}]);
client.query("INSERT INTO json_test (name, attributes) VALUES ('Sarah', $1)", [{"age": 8, "gender": "F"}]);
console.log("about to query");
var query = client.query("SELECT * FROM json_test");
query.on('row', function(row) {
console.log(row);
});
query.on('end', function() {
client.end();
});
Run Code Online (Sandbox Code Playgroud)
的package.json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "test.js",
"scripts": {
"test": "echo \"Error: no …Run Code Online (Sandbox Code Playgroud) 我最近从MySQL切换到postgres作为node.js项目的数据库.虽然我能够从我的本地pgAdmin III(OSX)客户端访问我的远程postgres数据库,但到目前为止我一直无法通过node.js连接到我的数据库.我确信我为pgAdmin和我的node.js输入的凭据完全相同.我尝试过的另一件事是在我的数据库服务器的pg_hba.conf中设置我的本地ipadress而不是md5.有什么我做错了吗?我最喜欢的搜索引擎提出了一些关于重置我的本地操作系统的令人担忧的命中.我刚刚使用了node-postgres的github repo doc中的示例:
var pg = require('pg');
var conString = "postgres://myusername:mypassword@hostname:5432/dbname";
var client = new pg.Client(conString);
client.connect(function(err) {
if(err) {
return console.error('could not connect to postgres', err);
}
client.query('SELECT NOW() AS "theTime"', function(err, result) {
if(err) {
return console.error('error running query', err);
}
console.log(result.rows[0].theTime);
client.end();
});
});
Run Code Online (Sandbox Code Playgroud)
这些是我每次尝试启动服务器时遇到的错误:
could not connect to postgres { [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }
Run Code Online (Sandbox Code Playgroud)
非常感谢帮助
我无法理解如何在 NodeJS 中连接 PostgreSQL 池并正确执行。我在路由器上使用 Express,所有处理程序都放在不同的文件中。每个人都建议使用数据库连接制作一个单独的文件,然后在每个源代码文件中“要求”它。是否可以通过 app.use 或其他方式连接此池?对于每个用户请求,我的所有处理程序始终使用数据库连接。