Sequelize v5 変更点まとめ
ORMであるSequelizeのv5のbetaが取れていたので、今後の移行のため簡単に変更点をまとめました。
v4からのおもな変更点
Node v4 LTS
Node v4のサポートが終了し、Node v6以上になった。
ただし、Node v6〜8のLTSも2019年中のため、すぐにv10.x以上のサポートになりそう
オペレータがデフォルトで有効になった
v4の頃から条件式を文字列で記述していると、"String based operators are now deprecated"という警告文が表示されるようになっていたが、operatorsAliasesがdeprecatedとなり、警告文が出るようになった。
モデルのエイリアス変更
多くのモデルのエイリアスの名称が変更された。
https://github.com/sequelize/sequelize/pull/9933#issue-216368529
ほとんどのプロトタイプ参照が削除
これまでSequelize.prototypeで参照していたものが削除され、直接Sequelizeインスタンスを使用する形になった。
https://github.com/sequelize/sequelize/blob/master/docs/upgrade-to-v5.md#sequelize
import Sequelize from 'sequelize';
const sequelize = new Sequelize('postgres://user:password@127.0.0.1:mydb');
/**
* v4までの書き方
*/
Model.findAll({
where: {
[sequelize.Op.and]: [
{
name: "Abc"
},
{
age: {
[Sequelize.Op.gte]: 18
}
}
]
}
}).catch(sequelize.ConnectionError, () => {
console.error('Something wrong with connection?');
});
/**
* v5からの書き方
*/
Model.findAll({
where: {
[Sequelize.Op.and]: [ // v4でprototypeが削除されたので、直接Sequelizeを使う
{
name: "Abc"
},
{
age: {
[Sequelize.Op.gte]: 18
}
}
]
}
}).catch(Sequelize.ConnectionError, () => {
console.error('Something wrong with connection?');
});
TypeScriptの正式サポート
外部サポート自体は以前から存在していたが、Sequelize自身がTypeScriptに対応したらしい。
https://github.com/sequelize/sequelize/pull/10287
他にもありますが、僕が特に気になったのはこんな感じでした。
ORMの使用自体に賛否両論ありますが、プロジェクトで使用しているところも多いと思います。
早めにマイグレーションしておくと後々困らずに済みます。