logologo
スタート
マニュアル
開発
プラグイン
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
スタート
マニュアル
開発
プラグイン
API
logologo

クイックスタート

プラグイン開発概要
最初のプラグインを作成
プロジェクトディレクトリ構造

サーバーサイド開発

概要
プラグイン
コレクション
データベース操作
データソース管理
リソース管理
ACL権限制御
ミドルウェア
キャッシュ
イベント
リクエストコンテキスト
マイグレーション
ロガー
I18n 国際化
コマンド
定時タスク管理
テスト

クライアントサイド開発

概要
プラグイン
コンテキスト
ルーター
ACL権限制御
データソース管理
リソース
リクエスト
スタイルとテーマ
ロガー
I18n 国際化
テスト

その他

プラグインアップグレードガイド
言語一覧
依存関係の管理
ビルド
Previous Pageコレクション
Next Pageデータソース管理
TIP

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

#Database

Database は、データベースタイプのデータソース(DataSource)の重要な構成要素です。各データベースタイプのデータソースには、対応する Database インスタンスがあり、dataSource.db を介してアクセスできます。メインのデータソースのデータベースインスタンスは、便利な app.db というエイリアスも提供しています。db の一般的なメソッドに慣れておくことは、サーバーサイドのプラグインを作成する上で基本となります。

#Database の構成要素

一般的な Database は、以下の要素で構成されています。

  • コレクション:データテーブルの構造を定義します。
  • モデル:ORM のモデルに対応します(通常、Sequelize によって管理されます)。
  • リポジトリ:データアクセスロジックをカプセル化するリポジトリ層で、より高度な操作メソッドを提供します。
  • フィールドタイプ:フィールドの型です。
  • フィルター演算子:フィルタリングに使用される演算子です。
  • イベント:ライフサイクルイベントとデータベースイベントです。

#プラグインでの使用タイミング

#beforeLoad フェーズで推奨される処理

このフェーズではデータベース操作はできません。静的クラスの登録やイベントリスニングに適しています。

  • db.registerFieldTypes() — カスタムフィールドタイプ
  • db.registerModels() — カスタムモデルクラスの登録
  • db.registerRepositories() — カスタムリポジトリクラスの登録
  • db.registerOperators() — カスタムフィルター演算子の登録
  • db.on() — データベース関連イベントのリスニング

#load フェーズで推奨される処理

このフェーズでは、すべての先行するクラス定義とイベントがロード済みのため、データテーブルをロードしても欠落や漏れが発生することはありません。

  • db.defineCollection() — 新しいデータテーブルの定義
  • db.extendCollection() — 既存のデータテーブル設定の拡張

プラグインの組み込みテーブルを定義する場合は、./src/server/collections ディレクトリに配置することをお勧めします。詳細については、コレクション を参照してください。

#データ操作

Database は、データをアクセスおよび操作するための2つの主要な方法を提供します。

#リポジトリを介した操作

const repo = db.getRepository('users');
const user = await repo.findOne({ filter: { id: 1 } });

リポジトリ層は通常、ページネーション、フィルタリング、権限チェックなどのビジネスロジックをカプセル化するために使用されます。

#モデルを介した操作

const UserModel = db.getModel('users');
const user = await UserModel.findByPk(1);

モデル層は ORM エンティティに直接対応しており、より低レベルのデータベース操作の実行に適しています。

#どのフェーズでデータベース操作が可能ですか?

#プラグインのライフサイクル

フェーズデータベース操作が可能
staticImport不可
afterAdd不可
beforeLoad不可
load不可
install可能
beforeEnable可能
afterEnable可能
beforeDisable可能
afterDisable可能
remove可能
handleSyncMessage可能

#アプリケーションイベント

フェーズデータベース操作が可能
beforeLoad不可
afterLoad不可
beforeStart可能
afterStart可能
beforeInstall不可
afterInstall可能
beforeStop可能
afterStop不可
beforeDestroy可能
afterDestroy不可
beforeLoadPlugin不可
afterLoadPlugin不可
beforeEnablePlugin可能
afterEnablePlugin可能
beforeDisablePlugin可能
afterDisablePlugin可能
afterUpgrade可能

#Database イベント/フック

フェーズデータベース操作が可能
beforeSync不可
afterSync可能
beforeValidate可能
afterValidate可能
beforeCreate可能
afterCreate可能
beforeUpdate可能
afterUpdate可能
beforeSave可能
afterSave可能
beforeDestroy可能
afterDestroy可能
afterCreateWithAssociations可能
afterUpdateWithAssociations可能
afterSaveWithAssociations可能
beforeDefineCollection不可
afterDefineCollection不可
beforeRemoveCollection不可
afterRemoveCollection不可