Sutando ORM:Node.js ための Laravel Eloquent エクスペリエンス
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 クラスでモデルを定義
- リレーション管理 —
hasMany、belongsTo、belongsToManyなど - ソフトデリート — 組み込みサポート
- モデルイベント — 作成・更新・削除のライフサイクルにフック
- クエリスコープ — 再利用可能なクエリ条件
- タイプキャスト — 属性の自動型変換
- マイグレーション — スキーマビルダー付き
なぜ 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 Eloquent | Sutando |
|---|---|---|
| パターン | Active Record | Active Record |
| モデル定義 | PHP クラス | TypeScript クラス |
| リレーション | メソッドベース | メソッドベース |
| ソフトデリート | トレイト | トレイト |
| イベント | 静的メソッド | 静的メソッド |
| スコープ | メソッド | メソッド |
まとめ
Sutando は、Laravel Eloquent の開発体験を Node.js でもたらす ORM です。Active Record パターン、デコレーター不要のモデル定義、豊富な機能により、高速な開発が可能になります。
スタートガイド を読んで始めましょう。