Tech Sketch Bucket of Technical Chips by TIS Inc.

Node.jsのORM Sequelizeを使う【応用編】

Pocket

この記事はeXcale Developer's Blogから移転されたものです。

eXcale開発チームの泉谷(@syguer)です。
今回は前回紹介した記事の応用編として、SequelizeをNode.jsのWebアプリケーションフレームワークであるexpressで用いる方法を紹介します。

例として簡単なメッセージボードアプリを作ってみようと思います。

Sequelizeを使う準備

前提としてnpm及びexpressはインストール済みとします。インストールの方法についてはnpm公式ドキュメント及びexpress公式ドキュメントを参照してください。

まずはexpressデフォルトのジェネレーターを使ってアプリケーションのひな形を作成します。
下記コマンドで作成します。

-eオプションはレンダリングエンジンにejsを用いる場合のオプションです。デフォルトのjadeを使用したい場合は不要です。
以降、作成したアプリケーションのディレクトリをワーキングディレクトリとして説明します。

ひな形が作成されたらpackage.jsonのdependenciesの中に以下の2行を追加します。

追加したら下記コマンドを実行し、依存モジュールをインストールします。

これで準備は完了です。

モデルを実装する

最初にモデルの定義ファイルを置くためのディレクトリを作ります。

早速モデルの定義を…といきたいところですが、まずはモデルを呼び出すためのベースを準備します。以下のようなコードになります。

これで、ベース部分ができました。
今後モデルの定義を追加するときは15行目のように足していきます。
早速メッセージを扱うためのモデルを定義しましょう。
今回のアプリではメッセージの作者と内容のみのシンプルなモデルを定義しました。

モデル定義の反映

ここがexpressでSequelizeを用いる際の肝になるところです。
前回の記事でsync()を呼ぶことでモデルをテーブルに反映できることを紹介しました。
app.jsで以下のようにすることでモデル定義の反映とサーバーの起動を行います。

こうすることで、モデルをDBに反映させた後にサーバーを起動することができます。
試しに一度アプリケーションを起動してみましょう。

expressのデフォルトの画面が表示されればうまくいっています。
データベースの中身を見てみましょう。

Messagesテーブルが作られていると思います。
もし起動に失敗するようであれば、
・MySQLは起動しているか?
・ユーザー名などに間違いがないか?
を確認してください。

モデルの使い方

では作成したmessageモデルをコントローラーから利用してみます。
今回のアプリではメッセージの作成と削除を実装します。

このコントローラーに対応したルーティングは以下のようになります。

また、メッセージをホーム画面で表示できるようにします。

ルーティングの定義を追加した最終的なapp.jsは以下のようになります。

あとはビューを定義すれば完成です。

ビューの作成

ビューではメッセージの送信フォームと、コントローラーから渡されたメッセージのリストを表示を行います。
見やすさのために簡単なcssを設定しました。ここは好みで変更してください。

アプリケーションの起動

先ほどと同じように以下のコマンドで起動し、「http://localhost:3000/」にアクセスしてみましょう。
アプリケーションの画面は正しく表示されたでしょうか?

メッセージの作成、削除ができるか試してみましょう。

最後に

今回はexpress + Sequelize + MySQLを使ったアプリケーションの作成を紹介しました。
基本的なwebアプリケーションはこの構成で作れるので、ぜひ試してみてください!

エンジニア採用中!私たちと一緒に働いてみませんか?