Creating Entities
Entities של Base44 מוגדרים מקומית בפרויקט שלך ואז נדחפים ל-Base44 backend.קריטי: מתן שמות לקבצים
קבצי entity חייבים להשתמש במתן שמות kebab-case:{kebab-case-name}.jsonc
| שם Entity | שם קובץ |
|---|---|
Task | task.jsonc |
TeamMember | team-member.jsonc |
ActivityLog | activity-log.jsonc |
TeamMember.jsonc, teamMember.jsonc
RIGHT: team-member.jsonc
תוכן עניינים
Entity Directory
כל הגדרות ה-entity חייבות להיות ממוקמות בתיקייתbase44/entities/ בשורש הפרויקט שלך. כל entity מוגדר בקובץ .jsonc משלו.
מבנה לדוגמה:
איך ליצור Entity
- צור קובץ
.jsoncחדש בתיקייתbase44/entities/ - הגדר את סכמת ה-entity שלך על פי המבנה למטה
- דחוף את השינויים ל-Base44 באמצעות ה-CLI
מבנה סכמת Entity
כל קובץ entity עוקב אחר מבנה דמוי JSON Schema:טעות נפוצה: מאפיין schema מקונן
שגוי - אל תעטוף מאפיינים באובייקטschema:
type ו-properties ברמה העליונה:
סוגי שדות נתמכים
String
שדה טקסט בסיסי:date, date-time, time, email, uri, hostname, ipv4, ipv6, uuid, file, regex, richtext
String עם Enum
מוגבל לערכים ספציפיים:Number
Integer
למספרים שלמים בלבד:Binary
לנתוני file/blob:Boolean
מערך של Strings
מערך של Objects
מאפייני שדה
| מאפיין | תיאור |
|---|---|
type | סוג נתונים: string, number, integer, boolean, array, object, binary |
description | תיאור השדה שקריא לאדם |
enum | מערך של ערכים מותרים (עבור strings) |
enumNames | תוויות קריאות לאדם עבור ערכי enum (אותו סדר כמו enum) |
default | ערך ברירת מחדל כשלא מסופק |
format | רמז לפורמט: date, date-time, time, email, uri, hostname, ipv4, ipv6, uuid, file, regex, richtext |
items | סכמה לפריטי מערך |
properties | מאפיינים מקוננים עבור סוגי object |
$ref | הפניה להגדרת סכמה אחרת |
minLength | אורך string מינימלי |
maxLength | אורך string מקסימלי |
pattern | תבנית regex לאימות string |
minimum | ערך מינימלי למספרים |
maximum | ערך מקסימלי למספרים |
rls | כללי אבטחה ברמת שדה (ראה סעיף Field Level Security) |
דוגמה מלאה
הנה הגדרת entity מלאה עבור Task:מוסכמות מתן שמות
- שם Entity: השתמש ב-PascalCase עם תווים אלפאנומריים בלבד (למשל,
Task,TeamMember,ActivityLog)- חייב להתאים לתבנית:
/^[a-zA-Z0-9]+$/ - תקף:
Task,TeamMember,Order123 - לא תקף:
Team_Member,Team-Member,Team Member
- חייב להתאים לתבנית:
- שם קובץ: השתמש ב-kebab-case תואם ל-entity (למשל,
task.jsonc,team-member.jsonc,activity-log.jsonc) - שמות שדות: השתמש ב-snake_case (למשל,
board_id,user_email,due_date)
יחסים בין Entities
ליצירת יחסים בין entities, השתמש בשדות reference של ID:Row Level Security (RLS)
Row Level Security (RLS) שולט אילו רשומות משתמשים יכולים לגשת אליהן בהתבסס על זהותם ומאפייניהם. כללי RLS מוגדרים לכל entity בתוך שדה ה-rls של הסכמה.
חשוב: אם לא מוגדר RLS, כל הרשומות נגישות לכל המשתמשים.
פעולות RLS
RLS תומך בחמש פעולות:| פעולה | תיאור |
|---|---|
create | שלוט מי יכול להוסיף רשומות חדשות |
read | שלוט מי יכול לצפות ברשומות |
update | שלוט מי יכול לשנות רשומות |
delete | שלוט מי יכול להסיר רשומות |
write | קיצור עבור create, update ו-delete יחד |
ערכי הרשאה
כל פעולה מקבלת אחד מהערכים הבאים:true- אפשר לכל המשתמשים (כולל אנונימיים/לא מאומתים)false- חסום את כל המשתמשים- אובייקט תנאי - אפשר למשתמשים שתואמים לתנאי
משתני תבנית
השתמש במשתני תבנית להפניה למאפייני המשתמש הנוכחי:| תבנית | תיאור |
|---|---|
{{user.id}} | ה-ID של המשתמש |
{{user.email}} | האימייל של המשתמש |
{{user.role}} | התפקיד של המשתמש |
{{user.data.field_name}} | שדה מותאם מאובייקט ה-data של המשתמש |
מאפייני Entity מובנים
לכל רשומת entity יש את המאפיינים המובנים האלה זמינים לכללי RLS:| מאפיין | תיאור |
|---|---|
id | מזהה רשומה ייחודי |
created_date | חותמת זמן כשהרשומה נוצרה |
updated_date | חותמת זמן כשהרשומה עודכנה לאחרונה |
created_by | האימייל של המשתמש שיצר את הרשומה |
סוגי כללים
יש שני סוגי תנאים שניתן להשתמש בהם: 1. השוואת entity-to-user - השווה שדות רשומה לערכי המשתמש הנוכחי:user_condition:
user_conditionתומך רק בequality פשוט (למשל,{ "role": "admin" })- סינון שדה entity דורש קידומת
data.: השתמש ב-{ "data.fieldname": value }לסינון לפי ערכי שדה entity - להשוואות שדות
data.*, ניתן להשתמש באופרטורים:$in,$nin,$ne,$all - אופרטורים לוגיים
$or,$and,$norזמינים לשילוב תנאים
דוגמאות RLS
גישה לבעלים בלבד:תבניות RLS נפוצות
יצירה ציבורית, ניהול מנהלים בלבד (למשל, טפסי צור קשר, waitlists):מגבלות
- user_condition הוא equality בלבד:
user_conditionתומך רק בהתאמה מדויקת (למשל,{ "role": "admin" }) - ללא אופרטורים - אין אופרטורי השוואה על user_condition:
$gt,$lt,$regex,$expr,$whereאינם נתמכים לתנאי משתמש - אין תבניות מקוננות עמוקות: תבניות כמו
{{user.data.profile.department}}עשויות שלא לעבוד
- אופרטורים לוגיים:
$or,$and,$norלשילוב מספר תנאים - אופרטורי שדה (עבור שדות
data.*בלבד):$in,$nin,$ne,$all - סינון שדה entity: השתמש בקידומת
data.לסינון לפי ערכי שדה entity (למשל,{ "data.status": "published" }או{ "data.completed": true })
תבניות גישה מורכבות
לתבניות גישה מורכבות שדורשות תנאים מרובים (למשל, “owner OR admin”), יש לך שתי אפשרויות:- השתמש בממשק המשתמש של Base44 Dashboard - הלוח מאפשר הוספת מספר כללים לכל פעולה עם לוגיקת OR
- השתמש ב-entities נפרדים - חלק נתונים למספר entities עם כללי גישה שונים
- השתמש בפונקציות backend - יישם לוגיקת גישה מותאמת בפונקציות backend
Field Level Security (FLS)
Field Level Security מאפשר לך לשלוט בגישה לשדות בודדים בתוך entity. כללי FLS מוגדרים בתוך הסכמה של כל שדה באמצעות מאפייןrls.
פעולות FLS
FLS תומך באותן פעולות כמו RLS ברמת entity:| פעולה | תיאור |
|---|---|
create | שלוט מי יכול להגדיר שדה זה בעת יצירת רשומות |
read | שלוט מי יכול לצפות בשדה זה |
update | שלוט מי יכול לשנות שדה זה |
delete | שלוט מי יכול לנקות שדה זה |
write | קיצור עבור create, update ו-delete יחד |
דוגמת FLS
hr יכולים לקרוא או לעדכן את שדה ה-salary. כל המשתמשים עם גישה ל-entity יכולים לקרוא/לעדכן שדות אחרים.
הערות FLS
- אם לא מוגדר RLS ברמת שדה, השדה יורש את כללי ה-RLS ברמת entity
- כללי FLS עוקבים אחר אותו פורמט תנאי כמו RLS ברמת entity
- השתמש ב-FLS לשדות רגישים כמו משכורת, SSN או הערות פנימיות
דחיפת Entities
פקודתentities push תדחוף את כל ה-entities שקיימים בתיקיית base44/entities.
דף זה תורגם באמצעות בינה מלאכותית. למידע המדויק והעדכני ביותר, עיין בגרסה האנגלית.

