NodeでORMのSequelize使ってみた

ORMのSequelizeを使ってみた。 NodejsでWebアプリケーション作るときは、MongoDB + Express + Angular + NodejsのMEANスタックを使うのが定番らしいけど、 MongoDBもAngularも触ったこと無いので、慣れてるMySQLを使うべくSequelizeを入れた。

モデルの作成

var Sequelize = require('sequelize');
var Seq = new Sequelize('nodejs','root','');
var Article = Seq.define('Article', {
        name: Sequelize.STRING,
        text: Sequelize.TEXT('long')
});
Seq.sync();

これ

var Seq = new Sequelize('nodejs','root','');

だけで、localhostのnodejsっていうDBにrootで接続してくれる。パスワードがあるときは第三引数で指定する。

var Article = Seq.define('Article', {
        name: Sequelize.STRING,
        text: Sequelize.TEXT('long')
});

データモデルはこんな感じで定義する。Seq.sync() すると、モデルで書いたデータ構造でMySQLにテーブルを作ってくれる。

レコードの追加

Article.create({ 
        name: 'foo', 
        text: 'bar'
    });

レコード追加するときは、こんな感じ。直感的。

レコードの検索

Article.findAll().then(function(articles){
    //結果の処理
});

検索もこんな感じで全件検索したりできる。 今のとこ一覧しか使ってないので、Where句指定してないけど、ドキュメント読んだ感じ指定するのも簡単だった。

まとめ

  • Sequelizeを日本語で解説したサイトは少ないけど、公式サイトのドキュメントしっかりしてるし、海外では採用事例多そうなので安心。

  • ORM使うと抽象度が上がるけど、実際にどんなクエリが走るのかが目に見えなくなって、大きなプロジェクトだと破綻するとも言うので、 ORMを使うのが一概に良いかどうかは分からない。

  • 一応、SequelizeはSQLのクエリが毎回ログに流れるので、眼力あれば確認できる。