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のクエリが毎回ログに流れるので、眼力あれば確認できる。