エンティティの作成
Base44 エンティティはプロジェクト内でローカルに定義され、Base44 バックエンドにプッシュされます。重要: ファイル命名
エンティティファイルは kebab-case 命名を使用する必要があります:{kebab-case-name}.jsonc
| エンティティ名 | ファイル名 |
|---|---|
Task | task.jsonc |
TeamMember | team-member.jsonc |
ActivityLog | activity-log.jsonc |
TeamMember.jsonc, teamMember.jsonc
正: team-member.jsonc
目次
エンティティディレクトリ
すべてのエンティティ定義はプロジェクトルートのbase44/entities/ フォルダーに配置する必要があります。各エンティティは独自の .jsonc ファイルで定義されます。
構造の例:
エンティティの作成方法
base44/entities/ディレクトリに新しい.jsoncファイルを作成します- 以下の構造に従ってエンティティスキーマを定義します
- CLI を使用して変更を Base44 にプッシュします
エンティティスキーマ構造
各エンティティファイルは JSON Schema に似た構造に従います:よくある間違い: ネストされた schema プロパティ
誤 - プロパティをschema オブジェクトでラップしないでください:
type と properties をトップレベルに配置します:
サポートされるフィールド型
文字列
基本的なテキストフィールド:date, date-time, time, email, uri, hostname, ipv4, ipv6, uuid, file, regex, richtext
Enum 付き文字列
特定の値に制約:数値
整数
整数のみ:バイナリ
ファイル/BLOB データ用:真偽値
文字列の配列
オブジェクトの配列
フィールドプロパティ
| プロパティ | 説明 |
|---|---|
type | データ型: string, number, integer, boolean, array, object, binary |
description | フィールドの人間可読な説明 |
enum | 許可される値の配列 (文字列用) |
enumNames | enum 値の人間可読なラベル (enum と同じ順序) |
default | 提供されない場合のデフォルト値 |
format | フォーマットのヒント: date, date-time, time, email, uri, hostname, ipv4, ipv6, uuid, file, regex, richtext |
items | 配列アイテムのスキーマ |
properties | オブジェクト型のネストされたプロパティ |
$ref | 別のスキーマ定義への参照 |
minLength | 最小文字列長 |
maxLength | 最大文字列長 |
pattern | 文字列検証用の正規表現パターン |
minimum | 数値の最小値 |
maximum | 数値の最大値 |
rls | フィールドレベルセキュリティルール (Field Level Security セクションを参照) |
完全な例
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 つの操作をサポートします:| 操作 | 説明 |
|---|---|
create | 新しいレコードを追加できるユーザーを制御 |
read | レコードを閲覧できるユーザーを制御 |
update | レコードを変更できるユーザーを制御 |
delete | レコードを削除できるユーザーを制御 |
write | create、update、delete を組み合わせた短縮形 |
権限値
各操作は以下のいずれかの値を受け入れます:true- すべてのユーザーを許可 (匿名/未認証を含む)false- すべてのユーザーをブロック- 条件オブジェクト - 条件に一致するユーザーを許可
テンプレート変数
現在のユーザーの属性を参照するにはテンプレート変数を使用します:| テンプレート | 説明 |
|---|---|
{{user.id}} | ユーザーの ID |
{{user.email}} | ユーザーのメールアドレス |
{{user.role}} | ユーザーのロール |
{{user.data.field_name}} | ユーザーの data オブジェクトのカスタムフィールド |
組み込みエンティティ属性
すべてのエンティティレコードには、RLS ルールで使用できる以下の組み込み属性があります:| 属性 | 説明 |
|---|---|
id | 一意のレコード識別子 |
created_date | レコード作成時のタイムスタンプ |
updated_date | レコードが最後に更新されたタイムスタンプ |
created_by | レコードを作成したユーザーのメールアドレス |
ルールタイプ
使用できる条件タイプは 2 種類あります: 1. Entity-to-user comparison - レコードフィールドを現在のユーザーの値と比較:user_condition を使用して直接ユーザープロパティをチェック:
user_conditionは 単純な等価性のみ サポート (例:{ "role": "admin" })- エンティティフィールドのフィルタリングには
data.プレフィックスが必要: エンティティフィールド値でフィルタするには{ "data.fieldname": value }を使用 data.*フィールドの比較では演算子を使用可能:$in,$nin,$ne,$all- 条件を組み合わせるための論理演算子
$or,$and,$norが利用可能
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 })
複雑なアクセスパターン
複数の条件を必要とする複雑なアクセスパターン (例: 「所有者 OR 管理者」) の場合、2 つの選択肢があります:- Base44 ダッシュボード UI を使用 - ダッシュボードでは操作ごとに複数のルールを OR ロジックで追加できます
- 別のエンティティを使用 - データを異なるアクセスルールを持つ複数のエンティティに分割
- バックエンド関数を使用 - バックエンド関数でカスタムアクセスロジックを実装
フィールドレベルセキュリティ (FLS)
フィールドレベルセキュリティを使用すると、エンティティ内の個々のフィールドへのアクセスを制御できます。FLS ルールは、各フィールドのスキーマ内でrls プロパティを使用して定義されます。
FLS 操作
FLS はエンティティレベル RLS と同じ操作をサポートします:| 操作 | 説明 |
|---|---|
create | レコード作成時にこのフィールドを設定できるユーザーを制御 |
read | このフィールドを閲覧できるユーザーを制御 |
update | このフィールドを変更できるユーザーを制御 |
delete | このフィールドをクリアできるユーザーを制御 |
write | create、update、delete を組み合わせた短縮形 |
FLS の例
hr ロールを持つユーザーのみが salary フィールドを読み取り/更新できます。エンティティにアクセスできるすべてのユーザーは他のフィールドを読み取り/更新できます。
FLS の注意事項
- フィールドレベル RLS が定義されていない場合、フィールドはエンティティレベル RLS ルールを継承します
- FLS ルールはエンティティレベル RLS と同じ条件フォーマットに従います
- salary、SSN、内部メモなどの機密フィールドには FLS を使用します
エンティティのプッシュ
entities push コマンドは base44/entities フォルダーに存在するすべてのエンティティをプッシュします。
このページは AI を使用して翻訳されました。最も正確で最新の情報については、英語版 を参照してください。

