質問するログイン新規登録
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

1回答

2010閲覧

node.js postgresの接続が行えない

teppeki

総合スコア0

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2021/08/31 06:28

編集2021/08/31 06:30

0

0

node.js初心者です。

node.jsでpostgresに接続したく困っています。
pgパッケージを利用して接続しようとしています。
バージョンは以下の通りです。
node.js:14.17.5
pg:6.1.2

node.js

1 2var pg = require('pg'); 3 4var conn = "tcp:[ユーザ]:[パスワード]@localhost:5432/[DB名]"; 5console.log("start"); 6pg.connect(conn, function(err, client){ 7 if(err){ 8 console.log("接続エラー"); 9 }else{ 10 console.log("接続成功"); 11 } 12}); 13console.log("END");

startとendは出力されますが、中身のコンソールログが表示されません。
接続情報の記載が誤っているのでしょうか。
何か情報をお持ちの方、ご教授願います。

またpgのバージョンは上記のバージョン限定でお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/08/31 07:53

コールバック関数が呼ばれる前に終了しているのでは。
guest

回答1

0

ふーむ、私はMySQLユーザーでPostgreSQLには明るくないので
私と一緒に公式サイトを見に行きましょうか。

pg - npm
⭐ Documentation ⭐にリンク貼ってありますね。

なんかのっけから質問文の使い方とは違うような気がしますね。
コネクション情報を使うのはトップページには記載されてないようなので、
Features -> Connecting -> Programmatic

この辺に良い感じのサンプルコードが見つかりました。
コネクションとコネクションプールの使い方を両方紹介している欲張り設定なので片方だけ使いましょうかね。

js

1const { Client } = require('pg'); 2 3const client = new Client({ 4 user: 'ユーザ', 5 host: 'localhost', 6 database: 'DB名', 7 password: 'パスワード', 8 port: 5432, 9}); 10client.connect(); 11client.query('SELECT NOW()', (err, res) => { 12 if (err) { 13 console.error(err); 14 } else { 15 console.log(res); 16 } 17 client.end(); 18});

更に下に質問文に似たアプローチのものも見つけました。
Connection URI

js

1const { Client } = require('pg'); 2 3// これで動作するかは知らんけど 4const conn = "tcp:[ユーザ]:[パスワード]@localhost:5432/[DB名]"; 5 6// 正規サンプルだとこうらしい 7// const connectionString = 'postgresql://dbuser:secretpassword@database.server.com:3211/mydb' 8 9const client = new Client({ 10 connectionString: conn, 11}); 12client.connect(); 13client.query('SELECT NOW()', (err, res) => { 14 if (err) { 15 console.error(err); 16 } else { 17 console.log(res); 18 } 19 client.end(); 20});

startとendは出力されますが、中身のコンソールログが表示されません。
接続情報の記載が誤っているのでしょうか。

多分"tcp:[ユーザ]:[パスワード]@localhost:5432/[DB名]"がダメなんでしょうね。
私はmysqlで始まる文字列はよく見てますので、
きっとpostgresqlだのDBの種類で始まるものが正しいのでしょうね。

なのでこの表記がマズイから修正すればすぐ終わると思いますが、

公式サイトのドキュメント見る限り古いバージョンの事記載されてないんですよね。
質問文と見比べた感じ全然使い方違うし。

Node.jsの世界は最新安定版にドンドン乗り換えていくのを推奨していますから、
これを良い機会に新しいバージョンにしてみてはどうでしょう?

どこぞの技術者が走り書きで書いた記事より、
公式のドキュメントの説得力の方が段違いです。

だから私もせっせと公式サイトを探してこういう回答文こしらえてるわけですからね。

投稿2021/08/31 12:03

miyabi-sun

総合スコア21510

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問