Skip to content
Sutando ORM:Node.js ための Laravel Eloquent エクスペリエンス
Dylan YuDylan Yu
約1年前

Node.js 向けの ORM を探しているなら、Sutando を知っておくべきです。Laravel Eloquent の開発体験を Node.js にもたらす、モダンな Active Record ORM です。

Sutando とは?

Sutando は Node.js 向けのモダンな ORM で、Laravel Eloquent の API パターンを直接参考にして設計されています。Active Record パターンを採用し、MySQL、PostgreSQL、SQLite、MariaDB、SQL Server などに対応しています。

主な特徴

  • Active Record パターン — モデルインスタンスが保存・更新・削除を直接実行
  • デコレーター不要 — プレーンな TypeScript クラスでモデルを定義
  • リレーション管理hasManybelongsTobelongsToMany など
  • ソフトデリート — 組み込みサポート
  • モデルイベント — 作成・更新・削除のライフサイクルにフック
  • クエリスコープ — 再利用可能なクエリ条件
  • タイプキャスト — 属性の自動型変換
  • マイグレーション — スキーマビルダー付き

なぜ Sutando なのか?

Node.js エコシステムには多くの ORM がありますが、それぞれ課題があります:

  • Prisma — 優秀だが、Data Mapper パターンでコード生成ステップが必要
  • TypeORM — デコレーター依存とメンテナンスの停滞
  • Drizzle — 軽量だが、リレーション管理が手動で煩雑

Sutando は、Laravel Eloquent のシンプルさと開発速度を Node.js にもたらします。

クイックスタート

bash
npm install sutando --save

データベースを設定し、最初のモデルを作成して、クエリを実行しましょう。完全なドキュメントは https://sutando.org/ja/guide/getting-started.html にあります。

ts
import { sutando, Model } from 'sutando';

// データベース接続情報を追加
sutando.addConnection({
  client: 'mysql2',
  connection: {
    host: '127.0.0.1',
    port: 3306,
    user: 'root',
    password: '',
    database: 'test'
  }
});

// モデルを定義
class User extends Model {
  table = 'users';
  
  relationPosts() {
    return this.hasMany(Post, 'user_id');
  }
}

class Post extends Model {
  table = 'posts';
  
  relationUser() {
    return this.belongsTo(User, 'user_id');
  }
}

// クエリを実行
const users = await User.query().with('posts').get();
console.log(users);

Eloquent との比較

機能Laravel EloquentSutando
パターンActive RecordActive Record
モデル定義PHP クラスTypeScript クラス
リレーションメソッドベースメソッドベース
ソフトデリートトレイトトレイト
イベント静的メソッド静的メソッド
スコープメソッドメソッド

まとめ

Sutando は、Laravel Eloquent の開発体験を Node.js でもたらす ORM です。Active Record パターン、デコレーター不要のモデル定義、豊富な機能により、高速な開発が可能になります。

スタートガイド を読んで始めましょう。

Released under the MIT License.