メインコンテンツにスキップ

Sequelize

Sequelize は Oracle、Postgres、MySQL、MariaDB、SQLite、および SQL Server 用の最新 TypeScript および Node.js ORM です。強固なトランザクションサポート、リレーション、EagerおよびLazyローディング、リードレプリケーションなどを備えています。

依存関係をインストールする

npm install sequelize sqlite3
# or
yarn add sequelize sqlite3

モデルを定義する

import { Sequelize, DataTypes } from 'sequelize';

const sequelize = new Sequelize('sqlite::memory:');
const User = sequelize.define('User', {
username: DataTypes.STRING,
birthday: DataTypes.DATE,
});

永続化とクエリ

const jane = await User.create({
username: 'janedoe',
birthday: new Date(1980, 6, 20),
});

const users = await User.findAll();

データモデリング

簡単にモデルを定義し、データベースの自動同期をオプションで使用できます。

const Wishlist = sequelize.define("Wishlist", {
title: DataTypes.STRING,
});
const Wish = sequelize.define("Wish", {
title: DataTypes.STRING,
quantity: DataTypes.NUMBER,
});

// Automatically create all tables
await sequelize.sync();

アソシエーション

モデル間の関連付けを定義し、Sequelize に重い作業を任せてください。

Wish.belongsTo(Wishlist);
Wishlist.hasMany(Wish);

const wishlist = await Wishlist.findOne();
const wishes = await wishlist.getWishes();
const wish = await wishlist.createWish({
title: 'Toys', quantity: 3,
});

await wishlist.removeWish(wish);

ソフト削除

一度にデータベースから完全に削除する代わりに、データを削除済みとしてマークします。

const User = sequelize.define("User", 
{ username: DataTypes.STRING },
{ paranoid: true },
});

const user = await User.findOne();

await user.destroy();
await User.findAll(); // non-deleted only
await User.findAll({ paranoid: false }); // all

Sequelize の使用を開始する準備はできていますか?

トランザクション, マイグレーション, 強力な型付け, JSON クエリ, ライフサイクルイベント(フック)などがあります。
Sequelize の提供する多くの機能の詳細をご確認ください。

はじめに