Skip to main content
このページは AI コーディングエージェントスキルの一部で、人間ではなくエージェント向けに書かれています。人間向けの Base44 ドキュメントは デベロッパードキュメント を参照してください。

エンティティの作成

Base44 エンティティはプロジェクト内でローカルに定義され、Base44 バックエンドにプッシュされます。

重要: ファイル命名

エンティティファイルは kebab-case 命名を使用する必要があります: {kebab-case-name}.jsonc 誤: TeamMember.jsonc, teamMember.jsonc 正: team-member.jsonc

目次

エンティティディレクトリ

すべてのエンティティ定義はプロジェクトルートの base44/entities/ フォルダーに配置する必要があります。各エンティティは独自の .jsonc ファイルで定義されます。 構造の例:

エンティティの作成方法

  1. base44/entities/ ディレクトリに新しい .jsonc ファイルを作成します
  2. 以下の構造に従ってエンティティスキーマを定義します
  3. CLI を使用して変更を Base44 にプッシュします

エンティティスキーマ構造

各エンティティファイルは JSON Schema に似た構造に従います:

よくある間違い: ネストされた schema プロパティ

- プロパティを schema オブジェクトでラップしないでください:
- typeproperties をトップレベルに配置します:
これはよくある間違いで、エンティティをプッシュするときに “Invalid schema: Schema must have a ‘type’ field” エラーが発生します。

サポートされるフィールド型

文字列

基本的なテキストフィールド:
フォーマット付き:
利用可能なフォーマット: date, date-time, time, email, uri, hostname, ipv4, ipv6, uuid, file, regex, richtext

Enum 付き文字列

特定の値に制約:

数値

整数

整数のみ:

バイナリ

ファイル/BLOB データ用:

真偽値

文字列の配列

オブジェクトの配列

フィールドプロパティ

完全な例

Task の完全なエンティティ定義:

命名規則

  • エンティティ名: 英数字のみの PascalCase を使用 (例: Task, TeamMember, ActivityLog)
    • パターン /^[a-zA-Z0-9]+$/ に一致する必要があります
    • 有効: Task, TeamMember, Order123
    • 無効: Team_Member, Team-Member, Team Member
  • ファイル名: エンティティに一致する kebab-case を使用 (例: task.jsonc, team-member.jsonc, activity-log.jsonc)
  • フィールド名: snake_case を使用 (例: board_id, user_email, due_date)

エンティティ間のリレーション

エンティティ間のリレーションを作成するには、ID 参照フィールドを使用します:

行レベルセキュリティ (RLS)

行レベルセキュリティ (RLS) は、ユーザーの ID と属性に基づいてユーザーがアクセスできるレコードを制御します。RLS ルールはスキーマの rls フィールド内でエンティティごとに定義されます。 重要: RLS が定義されていない場合、すべてのレコードがすべてのユーザーからアクセス可能です。

RLS 操作

RLS は 5 つの操作をサポートします:

権限値

各操作は以下のいずれかの値を受け入れます:
  1. true - すべてのユーザーを許可 (匿名/未認証を含む)
  2. false - すべてのユーザーをブロック
  3. 条件オブジェクト - 条件に一致するユーザーを許可

テンプレート変数

現在のユーザーの属性を参照するにはテンプレート変数を使用します:

組み込みエンティティ属性

すべてのエンティティレコードには、RLS ルールで使用できる以下の組み込み属性があります:

ルールタイプ

使用できる条件タイプは 2 種類あります: 1. Entity-to-user comparison - レコードフィールドを現在のユーザーの値と比較:
2. User condition check - user_condition を使用して直接ユーザープロパティをチェック:
重要な注意事項:
  • user_condition単純な等価性のみ サポート (例: { "role": "admin" })
  • エンティティフィールドのフィルタリングには data. プレフィックスが必要: エンティティフィールド値でフィルタするには { "data.fieldname": value } を使用
  • data.* フィールドの比較では演算子を使用可能: $in, $nin, $ne, $all
  • 条件を組み合わせるための論理演算子 $or, $and, $nor が利用可能
⚠️ 高度な RLS パターンと例については、rls-examples.md を参照してください

RLS の例

所有者のみアクセス:
部門ベースのアクセス:
管理者のみアクセス:
完全な RLS 構成:

一般的な RLS パターン

公開作成、管理者のみ管理 (例: 問い合わせフォーム、ウェイトリスト):
所有者のみアクセス:
ログイン済みユーザーのみ:

制限事項

  • user_condition は等価性のみ: user_condition は完全一致のみサポート (例: { "role": "admin" }) - 演算子はサポートされません
  • user_condition で比較演算子は使用不可: $gt, $lt, $regex, $expr, $where はユーザー条件でサポートされません
  • 深くネストされたテンプレートは不可: {{user.data.profile.department}} のようなテンプレートは動作しない場合があります
サポートされる演算子:
  • 論理演算子: 複数条件を組み合わせるための $or, $and, $nor
  • フィールド演算子 (data.* フィールドのみ): $in, $nin, $ne, $all
  • エンティティフィールドフィルタリング: エンティティフィールド値でフィルタするには data. プレフィックスを使用 (例: { "data.status": "published" } または { "data.completed": true })
⚠️ 包括的な RLS パターンと例については rls-examples.md を参照してください

複雑なアクセスパターン

複数の条件を必要とする複雑なアクセスパターン (例: 「所有者 OR 管理者」) の場合、2 つの選択肢があります:
  1. Base44 ダッシュボード UI を使用 - ダッシュボードでは操作ごとに複数のルールを OR ロジックで追加できます
  2. 別のエンティティを使用 - データを異なるアクセスルールを持つ複数のエンティティに分割
  3. バックエンド関数を使用 - バックエンド関数でカスタムアクセスロジックを実装

フィールドレベルセキュリティ (FLS)

フィールドレベルセキュリティを使用すると、エンティティ内の個々のフィールドへのアクセスを制御できます。FLS ルールは、各フィールドのスキーマ内で rls プロパティを使用して定義されます。

FLS 操作

FLS はエンティティレベル RLS と同じ操作をサポートします:

FLS の例

この例では、hr ロールを持つユーザーのみが salary フィールドを読み取り/更新できます。エンティティにアクセスできるすべてのユーザーは他のフィールドを読み取り/更新できます。

FLS の注意事項

  • フィールドレベル RLS が定義されていない場合、フィールドはエンティティレベル RLS ルールを継承します
  • FLS ルールはエンティティレベル RLS と同じ条件フォーマットに従います
  • salary、SSN、内部メモなどの機密フィールドには FLS を使用します

エンティティのプッシュ

entities push コマンドは base44/entities フォルダーに存在するすべてのエンティティをプッシュします。
push コマンドの詳細は entities-push.md を参照してください。
このページは AI を使用して翻訳されました。最も正確で最新の情報については、英語版 を参照してください。