使用Node.js连接到postgres数据库

时间:2016-05-13 20:00:17

标签: postgresql postgresql-9.5

我从命令行运行以下命令

npm models/database.js

我收到错误:

password authentication failed for user "marco" 

这是我的连接代码,它存储在我项目根级别的models文件夹中的Database.js文件中。

var pg = require('pg');
// var connectionString = process.env.DATABASE_URL || 'postgres://localhost:5432/NodeTestProject';
var connectionString = "postgres://marco:Easye123@localhost:5432/NodeTestProject";

var client = new pg.Client(connectionString);
client.connect();
var query = client.query('CREATE TABLE users(id SERIAL PRIMARY KEY, FirstName VARCHAR(40) not null, LastName VARCHAR(40) not null, MiddleName VARCHAR(40) not null, Email VARCHAR(40) not null, UserName VARCHAR(40) not null, Password VARCHAR(40) not null');
query.on('end', function() { client.end(); });

我100%确定当我设置Postgresql时,我将密码设置为" Easye123"我可以登录到Postgresql没有问题,我已经创建了一个名为NodeTestProject的数据库。我是否必须为NodeTestProject数据库创建用户?我错过了一步吗?任何反馈都将不胜感激。

enter image description here

1 个答案:

答案 0 :(得分:2)

对Postgresql

的新手

您在连接文件中输入的凭据与安装Postgresql时设置的SuperUser不同。在您的pgAdminIII中,您必须创建一个组角色并允许该组角色能够登录"设置完成后,将数据库的所有者声明为该组角色用户。最后声明GroupRole用户作为用户名和密码,用作连接字符串中的密码。

enter image description here

enter image description here

var pg = require('pg');
var conString = "postgres://Marco:12345@localhost:5432/NodeTestProject";

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);
    //output: Tue Jan 15 2013 19:12:47 GMT-600 (CST)
    client.end();
  });
});

我现在可以成功登录到本地数据库并与之交互。