【ISSUE】Express + PostgreSQL でつまづいたところ

0

2024年12月23日 22:38

はじめに

今回 Express / Heroku で業務効率化ツールを作成しました。

普段バックエンドのコードに慣れていないので特にDB周りで躓くことが多かったです。

DB関連でざっと躓いた内容を備忘録的に残しておきます。

dotenv は文字列として呼び出されます

環境変数としてDB接続情報を呼び出す時に

img

を使っていたのですが、最初接続できずませんでした。
出たエラー文は覚えていないのですが、dotenv ではなく直接書き込むと接続できる。

そこで process.env.hogetypeof で評価すると全てstring扱いになってました。

configのpathに気を付ける

今回最初にDB接続の関数を作って後で export して使えばいいか〜
と思って接続確認後に他の階層から呼び出したら、

Error: The server does not support SSL connections

んぉ??

で、公式ドキュメントやらなんやら見てると解答が。

https://github.com/motdotla/dotenv/issues/135#issuecomment-254211441

神様ありがとう。サンキューダッチ。

DB接続した関数を外部で呼び出すと値が undefined になる

完全に非同期の初歩的なミスしてました。

値を直接returnするのではなく、式をreturnする必要があります。

  • ダメだった例

img

  • 正しくはこっち

img

ダメだった例は同じファイルでconsole.log()してたときは正しく取れてたのでちょっとハマってしまった…

番外編:バージョンに気をつける

まぁ当然といえば当然なのですが…

今回最初に使ったコードがExpress3系で書かれていて気付かずに作成していて、中盤で4系に全部直すみたいな無駄な作業が…

ちゃんと公式ドキュメントよもうね。自分。

(というかnpmで管理されてるものは最終履歴まで確認した方がいいですね)

まぁどの公式も主要な変更はわかりやすく載せてくれてるので、それほど大変ではなかったです。

https://expressjs.com/ja/guide/migrating-4.html

さいごに

最後まで読んでいただきまことにありがとうございますm_ _m

DBに関わらず、普段やっていない領域なので学びしかありませんでした!

Expressが規約がゆるいFWということで、次は規約が強めのFW触って色々学んでいこうと思います^^
[cv:issue_marketplace_engineer]

0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。