質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

2回答

418閲覧

Web開発のサンプルコードを探しております

pyon_kiti_jp

総合スコア251

Node.js

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

1クリップ

投稿2022/06/22 07:14

Node.jsとExpressとPostgreSQLをつかって、WEBアプリを開発したいと思っています。そこで、開発にあたって、参考になりそうなサンプルソースをさがしております。

Rails+PostgreSQLの組み合わせだと情報はたくさんあるのですが、Node.jsとなると極端に情報量が少ないような印象を受けています。参考になる情報を教えていただけませんでしょうか。

WBアプリはある程度、本格的なものを作る予定をしております。学習教材でよくありがちな、ちょっとしたToDoアプリを作りましょう的なサンプルコードでは参考にならないと思っております。学習教材よりも少し本格的なサンプルコードを探しております。そのような情報をご存じの方、教えていただけませんでしょうか。よろしくお願いします。

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

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

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

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

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

guest

回答2

0

Rails+PostgreSQLの組み合わせだと情報はたくさんある

Railsは非常に多くのブラックボックスを抱えたプロジェクトだからです。
それにより必要最小限のコードで(それなりにまともに動くデフォルト値が補われて)動作します。

高速にWebサービスをリリースできるのはRailsの強みですが、
知っているべき前提が多く、その知識なしではお話にならないって所に起因していると私は分析しています。

学習教材よりも少し本格的なサンプルコードを探しております。

ぶっちゃけ無いと言うのが実情です。

Node,jsの文化がUnix哲学の「一つのことをうまくやるプログラムを書け」みたいなもんで、
必要最低限のモジュールだけを必要に応じてこしらえて動かす事が前提となっています。

なのでNode.jsの基礎の部分の学習と、
各種モジュールの公式サイトを読んで情報を引き出せる能力が極めて重要となります。
そしてそれらをすぐに試せるREPLもついています。

Expressは機能が多くないので、コード読めばやってることは全て書いてありますしドキュメントも神です。
日本語ドキュメントの上メニューにある「解説」「ガイド」「高度なトピック」「リソース」全てが神です。
Webに必要な要素はほぼ網羅されており、困ったら日本語ドキュメントに泣きつけば大抵書いてあります。
逆にそこいらの雑魚が書いたメンテされてない記事やサンプルコードなど不要です。

postgresqlはpgというモジュールの手厚いドキュメントを見つけました。
コネクションプールの張り方、Node.js世界での値の残し方を覚えれば後は消化試合みたいなもんですね。
これは調べてもすぐには出てこないので後述します。

後はNode.js力だけですね。
ここに関しては良い書籍を買うなり時間かけるしかないです。


さて、Node.js上でRDBMSを使う上で必要になる
シングルトンに関して解説して締めます。

Node.jsでrequireした場合、
require先のJavaScriptファイルを一度上から下まで全て実行してしまい、
最終的にmodule.exports変数に代入された値をキャッシュとしてもたせる動きになります。

なのでconnectingを読みつつ
コネクション張った瞬間をキャッシュにしてもたせましょう。
(本番環境の事を考えると記事内にある環境変数を使った手法にした方が良いでしょう)

js

1// src/modules/connection.js 2const {Pool} = require("pg"); 3 4module.exports = process.env.PGHOST 5 ? new Pool({ 6 user: 'dbuser', 7 host: 'database.server.com', 8 database: 'mydb', 9 password: 'secretpassword', 10 port: 3211, 11 }) 12 : new Pool();

使う側はこんな感じ
2箇所以上でrequireしてもnew Pool()で生成された後の値をキャッシュとして返すだけなので
様々なファイルが呼び出しても不必要なコネクションを張りに行くことはありません。
こちらもQueriesというサンプルがあるのでそこから採用します。

js

1// src/models/user.js 2 3// .で始まるとこのファイルのパスを起点としたJavaScriptファイルの指定になる 4const conn = require("../modules/connection.js"); 5 6module.exports = { 7 findById: async (id) => { 8 const res = await conn.query("SELECT * FROM users WHERE id = $1", [id]); 9 return res.rows[0]; 10 }, 11};

Express使う側はこんな感じ
ガイド -> ルーティングを読みつつ書きました。

js

1// app.js 2const express = require("express"); 3 4// 欲しいと思ったファイルの先頭で呼び出す 5const User = require("./src/models/user.js"); 6 7const app = express(); 8 9app.get("users/:id", (req, res) => { 10 const user = await User.findById(req.params.id); 11 res.json(user); 12}); 13 14app.port(3000);

ExpressJSでのテンプレートを何をどうやって使うか、ファイル分割テクニック等は
個別に調べれば出てくるので規模に合わせて調査してみてください。

投稿2022/06/22 08:22

miyabi-sun

総合スコア21158

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

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

pyon_kiti_jp

2022/06/27 02:13

ご丁寧にありがとうございました。
guest

0

ベストアンサー

何をしたいかによって、お勧めするサンプルは変わってくると思います。

単純にnodeでPostgreSQLを利用したサンプルが欲しいというのであれば、下記サイトを見つけました。
PostgreSQLのセットアップから、nodeからの接続までを行っています。
https://www.dailyupblog.com/backend_development/962/

また、Expressはシンプルなフレームワークなので、Expressのマニュアルに記載されているサンプルもわかりやすいかと思います。
https://expressjs.com/ja/guide/routing.html

「本格的」という文言がありますが、基本的にはどのアプリも学習教材の「ToDo」アプリのようなものの考え方を応用したりといったものがほとんどなので、学習教材的なサンプルに手を付けるのが一番いいかと思います。

投稿2022/06/22 07:32

編集2022/06/22 07:37
Matsumon0104

総合スコア1005

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

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

pyon_kiti_jp

2022/06/22 07:57

ありがとうございます。参考にさせていただきます。 自分が求めているレベルとしては、昔、「現場で使える Ruby on Rails 5速習実践ガイド」という本を参考にして、Railsを作った事がありますが、この程度のレベルのNode.js版をイメージしておりました。
Matsumon0104

2022/06/22 08:17 編集

私は「現場で使える Ruby on Rails 5速習実践ガイド」の内容がわからないので、適切な回答ができないかもしれませんが、オライリー(いわゆる動物本)が間違いないかもしれません。 元が英語を日本語翻訳した書籍になりますが、内容が結構詳しいですしサンプルコードものってますので、nodeエンジニアを目指すというのであれば、必携かもしれません。 全国の書店にもあると思いますので、ぜひ一度見てみてください。 ■nodeデザインパターン https://www.oreilly.co.jp/books/9784873118734/ ■Express(こちらは、日本語訳があるかはわからないです。) https://www.oreilly.com/library/view/web-development-with/9781492053507/
pyon_kiti_jp

2022/06/27 02:03

ご丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問