2016-05-13 41 views
0

我從我的命令行中運行以下命令連接到Postgres數據庫使用的是Node.js

npm models/database.js 

我收到錯誤:

password authentication failed for user "marco" 

這是我的連接代碼及其存儲在我的模型文件夾中的我的項目的根級別的Database.js文件。

var pg = require('pg'); 
// var connectionString = process.env.DATABASE_URL || 'postgres://localhost:5432/NodeTestProject'; 
var connectionString = "postgres://marco:[email protected]: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(); }); 

我相信,當我成立了PostgreSQL的我設置的密碼爲「Easye123」我可以登錄到PostgreSQL沒有問題,我創建了一個名爲NodeTestProject數據庫100%。我必須爲NodeTestProject數據庫創建一個用戶嗎?我錯過了一步嗎?對於任何反饋,我們都表示感謝。

enter image description here

+0

看起來像這樣會與node.js大多無關 –

+1

這是一個使用Postgresql的Node.Js項目,感謝您提供非常有用的反饋。 @KevinB – Lostaunaum

+0

我的觀點是,如果由於權限問題node.js無法連接到它,則應該使用相同的用戶信息從控制檯出現相同的問題。如果你不這樣做,那麼需要做更多的研究。 –

回答

2

給誰是新的到PostgreSQL

你把你的連接文件的憑據是不一樣的,你設置,同時安裝PostgreSQL的超級用戶。在您的pgAdminIII中,您必須創建一個組角色,並允許該組角色在設置「可以登錄」後,將該數據庫的所有者聲明爲該組角色用戶。最後,將GroupRole用戶聲明爲您用作連接字符串中密碼的用戶名和密碼。

enter image description here

enter image description here

var pg = require('pg'); 
var conString = "postgres://Marco:[email protected]: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(); 
    }); 
}); 

我現在可以成功登錄到這個本地數據庫,並與其進行交互。