![見出し画像](https://assets.st-note.com/production/uploads/images/103563687/rectangle_large_type_2_1d6b9d79792feab16613c590f2eee371.jpeg?width=1200)
Node.jsとPostgreSQLを連携させるには? 〜 node-postgres, ChatGPT 〜
プログラム自学案内の31回目です。前回の記事まででは、PostgreSQLで関係データベースの基本を紹介しました。今回からはデータベースに接続したWebアプリの開発を始めます。前回までの記事はこちらです。
これまでの連載では、Express.jsアプリの作り方、そして、PostgreSQLの使い方まで紹介しました。この連載のゴール、データベースに接続したWebアプリを作る準備が整いつつありますね。
ところが、ここからけっこう難易度があがってきます。上級者むけの内容になりますので、一気に片付けるのは難しい。慌てず焦らず学びましょう。
さっそく課題: PostgreSQL の中のデータを表示する Node.jsアプリ
では、さっそく課題です。 前回まで紹介した内容を応用し、ひとまずは、PostgreSQLの、ある1つのテーブルの内容を表示する、Node.jsアプリを作りましょう。
つまり、こんなふうに動くJavaScript(index.js)をつくってください。
![](https://assets.st-note.com/img/1682031471829-2v5ePFy9Y5.png)
Express.jsは、いったんあとまわし。新しいことをしようとする際には、いっぺんにいくつものことをせずに、すこしずつ小分けに、できることを増やしていくのが、挫折しないコツですのでね。
さあ、どうしますか。この記事ではヒントをいくつかお教えします。
先生に尋ねる前に
ちなみに、もし、ノーヒントだった場合はどうしますか。
「Google先生やChatGPT先生に聞いてみよう」
この初動は、おおむね正解なのですが、ちょっと立ち止まって考えてみてください。先生に聞かなければ本当に分からないものでしょうか? じつは、先生に聞かなくても、これまでの記事で紹介した知識から、ある程度、先生の答えの予想がつくはずです。
「どーせ PostgreSQLを操作するための Node.jsライブラリがあって、npm installするんでしょ? んでもって、そのライブラリの取説を読みながら使い方を覚えていかなきゃいけないんでしょ?」
と、ここまで、やりかたの予想がつけば、素晴らしいです。アマチュアであれば、相当な腕前だと思います。
このように、予想がついていたうえで調べることには、
先生から回答を引きだすための質問が上手にできる
先生の回答を、高い精度で、素早く理解できる
という良さがあります。なので、独力で推測ができた方が良いのには、違いないのです。
ヒント1: node-postgres
では、先生に聞いてみます。
![](https://assets.st-note.com/img/1682033125628-cx5JbVRgZe.png?width=1200)
ほらね! 予想通りだったでしょう。pgというパッケージを使うようです。
![](https://assets.st-note.com/img/1682033154477-acC9rbKLQ7.png?width=1200)
このパッケージの正式名称は、node-postgres というようですね。このパッケージが、psqlの代わりの役割をはたします。
Node.jsでPostgreSQLを使う方法やライブラリはこれだけではありませんが、この記事ではこれからnode-postgresを使うことを前提として話をすすめます。
ヒント2: ライブラリを使うには
node-postgresを使うにはどうすれば良いでしょうか? 以前の記事 で紹介した内容をおさらいすると、次の通りになります。
何はともあれプロジェクト作成
ライブラリのインストール
ライブラリを使う
require()
ライブラリごとに、つどつど、取説を読む
ネットの記事やChatGPTで調べると、おそらくこれらの全部または一部の手順が案内されることになります。上記の段取りがアタマのなかに入っていないまま、一部だけやっても、当然うまくいかず、つまづくというわけ。
だから、ネットやChatGPT、書籍などの情報は参考になりますが、結局、参考程度にしかならないのですね。
ヒント3: DBへのログインに必要な情報
psqlでPostgreSQLを利用するときには、ログイン しましたよね。
node-postgresでPostgreSQLを利用するにも、同じ手順が必要です。一般に、DBにログインするために必要な情報は次のとおりです。
接続先DBの情報
ホスト名(host)
ポート番号(port)
データベース名(database)
接続しようとするユーザの情報
ユーザ名(user)
パスワード(password)
設定方法は、ここ に色々な方法が書かれていますが、一番手っ取り早いのは "Programmatic" の方法ですので、まずはこれで試すのがいいでしょう。
(ただし、玄人が商用アプリとして開発するときには、きっと "Environment Variable" の方法を選びます。なぜならそれが、運用保守しやすいWebアプリを作るコツ に沿った方法だからです)
ホスト名とポート番号はpsqlを利用するときには、指定していなかったかもしれません。この場合、デフォルト値としてホスト名としてlocalhost(自分自身を指す名前で、127.0.0.1 と同じ意味です)、ポート番号として5432が使われています。psqlのマニュアル で確かめてみてください。
重要トピック: callbacks, async/await って?
あとは、試行錯誤して課題にチャレンジしていただきたいのですが、ここで重要なトピックに触れないわけには行きません。
node-postgres の取説 ではしょっぱなに、「with async/await」「with callbacks」の二つのやり方が説明されています。この二つの言葉は、それぞれどういう意味でしょうか?
![](https://assets.st-note.com/img/1682033600005-bNVCUdPhmh.png?width=1200)
この二つの言葉の理解は、じつは JavaScript、ことにNode.jsと付き合う上で超重要です。この理解を避けて、Node.js プログラミングを続けるのは難しいんですよね。
ところが困ったことに、これらの言葉、ググったりChatGPTに説明を聞いたりしても、そうとうに理解しにくい内容なのです。
![](https://assets.st-note.com/img/1682033703527-XUSjJP1T9M.png?width=1200)
まいっちゃいました。そこで、次回の記事では、ChatGPT先生もできなかった分かりやすい説明に、私が挑戦してみたいと思います。
余談:AI は IT技術者の仕事を奪うか
今回の記事では最近取り上げられることの多い、ChatGPT先生に何度か登場していただきました。
ちなみに、私は楽観的なので、チマタで語られる
「ChatGPT先生に聞けば答えをおしえてくれるので、何も分からない素人でもプログラミングができるようになる。IT技術者はそのうちほとんど失業」
みたいな世界は、実現されることを期待しています。そうなると、もちろん私も失業してしまいますが、私はとても楽天家なので、IT技術者としての職を失ったところで、多少ミジメな思いはしても、食っていけないことはなかろう、と、タカをくくっているのです。
ただ、私が失職する時代の到来までは、まだあともう少し、10年くらいはかかる気がします。まあ、未来の予想なんか出来っこないので、今のうちは、今出来ることをやりましょう。
まとめと次回予告
今回の記事では、Node.jsとPostgreSQLとの連携の第一歩を踏み出すためのヒントを、いくつか紹介しました。
じつは本当は、今回の記事で、async/await の説明まで一息でしたかったのです。しかし、この説明を書きはじめると、これはこれだけで、記事一回分に相当する内容であることが分かったのでした。
というわけは次回は、async/await をはじめとする、JavaScriptの非同期処理に関係する概念の紹介をします。鋭意執筆中ですので、お待ちください。