Node.jsのORMについて
概要
ここではNode.jsに存在するいくつかのORMについて紹介します 前置き
筆者はここ半年〜1年近くNode.jsでバックエンドを書いていないです。ですので、ここの情報は最新の状態を反映していない可能性があります。 また、ここにある内容はあくまで筆者個人の意見や見解に基づいたものです
(スター数から判断すると) 多分、一番人気なのかな❓ (2021/01現在)
Active Recordパターンを採用しているため、RailsやLaravelなどの経験がある方は使いやすいかも🙆♂️ 最後に使ったのが3年近く前なので、もしかしたら現在は改善されているかも...
とはいえ、非同期処理とかが関係してくる都合上、どうしてもRailsのactiverecord程の使い勝手を得るのは難しいという印象...😖 Active Record/Data Mapperの両方のデザインパターンを採用しており、小規模〜大規模まで幅広く使用できることが意識されています
ネックがあるとすれば、以下のような点かと思います:
2021/01現在、まだメジャーリリースされていない (メジャーリリースまでにまだ破壊的変更が起こる可能性が考えられます)
正確に言うと、TypeORMにはEntitySchemaという機能があり、これを使えば、デコレータやDecorator metadataに依存せずにマッピングを定義することも可能です 個人的には一番好み🙆♂️
正直に言うと、使ったことがないので詳しくないです😖
現時点だと最も勢いがあるORMなのかな❓
Knex.jsが提供している機能は一通り使用できる(クエリビルダ、マイグレーション、シード等) insertGraphやupsertGraphがとても強力
インテグレーションテストを書きやすい
code:typescript
import { Model, transaction } from 'objection';
describe('...', () => {
let trx, knex;
beforeEach(async () => {
knex = Model.knex();
trx = await transaction.start();
Model.knex(trx);
});
afterEach(async () => {
await trx.rollback();
Model.knex(knex);
});
it('...', async () => {
...
});
});
個人的な結論