Creating Entities
Entities של Base44 מוגדרים מקומית בפרויקט שלך ואז נדחפים ל-Base44 backend.קריטי: מתן שמות לקבצים
קבצי entity חייבים להשתמש במתן שמות kebab-case:{kebab-case-name}.jsonc
WRONG:
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
מאפייני שדה
דוגמה מלאה
הנה הגדרת 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 תומך בחמש פעולות:ערכי הרשאה
כל פעולה מקבלת אחד מהערכים הבאים:true- אפשר לכל המשתמשים (כולל אנונימיים/לא מאומתים)false- חסום את כל המשתמשים- אובייקט תנאי - אפשר למשתמשים שתואמים לתנאי
משתני תבנית
השתמש במשתני תבנית להפניה למאפייני המשתמש הנוכחי:מאפייני Entity מובנים
לכל רשומת entity יש את המאפיינים המובנים האלה זמינים לכללי RLS:סוגי כללים
יש שני סוגי תנאים שניתן להשתמש בהם: 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:דוגמת FLS
hr יכולים לקרוא או לעדכן את שדה ה-salary. כל המשתמשים עם גישה ל-entity יכולים לקרוא/לעדכן שדות אחרים.
הערות FLS
- אם לא מוגדר RLS ברמת שדה, השדה יורש את כללי ה-RLS ברמת entity
- כללי FLS עוקבים אחר אותו פורמט תנאי כמו RLS ברמת entity
- השתמש ב-FLS לשדות רגישים כמו משכורת, SSN או הערות פנימיות
דחיפת Entities
פקודתentities push תדחוף את כל ה-entities שקיימים בתיקיית base44/entities.
דף זה תורגם באמצעות בינה מלאכותית. למידע המדויק והעדכני ביותר, עיין בגרסה האנגלית.