Node案件でORMのSequelizeを使用しました。
公式のドキュメントに書いてあったりなかったり、Sequelizeに関する備忘録を残します。
1.Sequelizeで使用しているDBインスタンスを取得する
ORMを通すよりは直接DBインスタンスからクエリ流した方が速いので、使用しているインスタンス取れないかなぁと思ってソース見たらメソッドが用意されておりました。
sequelize.connectionManager.getConnection().then((db) => { |
ポイント
getConnection
するとPromiseが返る- コールバックの第1引数にDBインスタンスが入る
- APIは各DBに依存する
2.Sequelizeでトランザクション管理
複数モデルのupdateを1トランザクションで流して、全て実行した後Promiseの結果を受け取ります。Promise.each
がキモ。Bluebird ありがとう。
sequelize.transaction((t) => { |
3.エスケープ処理する
1とも関係しますが、シビアにパフォーマンスが要求される場面でORMの機能は使わずクエリをそのまま流したかったのでエスケープ処理を入れる必要がありました。
sequelize.escape(req.params.user_id); |
Sequelize意外と痒いところに手が届きます。
Promiseベースで記述できるのもGood :D
気づけば2016年最初の記事。。