Skip to main content
דף זה הוא חלק ממיומנות של סוכן קידוד AI ונכתב לסוכנים, לא לבני אדם. לתיעוד Base44 הקריא לבני אדם, ראה את תיעוד המפתחים.

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

  1. צור קובץ .jsonc חדש בתיקיית base44/entities/
  2. הגדר את סכמת ה-entity שלך על פי המבנה למטה
  3. דחוף את השינויים ל-Base44 באמצעות ה-CLI

מבנה סכמת Entity

כל קובץ entity עוקב אחר מבנה דמוי JSON Schema:

טעות נפוצה: מאפיין schema מקונן

שגוי - אל תעטוף מאפיינים באובייקט schema:
נכון - שים type ו-properties ברמה העליונה:
זו טעות נפוצה שתגרום לשגיאות “Invalid schema: Schema must have a ‘type’ field” בעת דחיפת entities.

סוגי שדות נתמכים

String

שדה טקסט בסיסי:
עם format:
Formats זמינים: 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 תומך בחמש פעולות:

ערכי הרשאה

כל פעולה מקבלת אחד מהערכים הבאים:
  1. true - אפשר לכל המשתמשים (כולל אנונימיים/לא מאומתים)
  2. false - חסום את כל המשתמשים
  3. אובייקט תנאי - אפשר למשתמשים שתואמים לתנאי

משתני תבנית

השתמש במשתני תבנית להפניה למאפייני המשתמש הנוכחי:

מאפייני Entity מובנים

לכל רשומת entity יש את המאפיינים המובנים האלה זמינים לכללי RLS:

סוגי כללים

יש שני סוגי תנאים שניתן להשתמש בהם: 1. השוואת entity-to-user - השווה שדות רשומה לערכי המשתמש הנוכחי:
2. בדיקת תנאי משתמש - בדוק מאפייני משתמש ישירות באמצעות user_condition:
הערות חשובות:
  • user_condition תומך רק בequality פשוט (למשל, { "role": "admin" })
  • סינון שדה entity דורש קידומת data.: השתמש ב-{ "data.fieldname": value } לסינון לפי ערכי שדה entity
  • להשוואות שדות data.*, ניתן להשתמש באופרטורים: $in, $nin, $ne, $all
  • אופרטורים לוגיים $or, $and, $nor זמינים לשילוב תנאים
⚠️ לתבניות RLS מתקדמות ודוגמאות, ראה rls-examples.md

דוגמאות RLS

גישה לבעלים בלבד:
גישה מבוססת מחלקה:
גישה למנהלים בלבד:
תצורת 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 })
⚠️ ראה rls-examples.md לתבניות RLS ודוגמאות מקיפות

תבניות גישה מורכבות

לתבניות גישה מורכבות שדורשות תנאים מרובים (למשל, “owner OR admin”), יש לך שתי אפשרויות:
  1. השתמש בממשק המשתמש של Base44 Dashboard - הלוח מאפשר הוספת מספר כללים לכל פעולה עם לוגיקת OR
  2. השתמש ב-entities נפרדים - חלק נתונים למספר entities עם כללי גישה שונים
  3. השתמש בפונקציות 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.
לפרטים נוספים על פקודת ה-push, ראה entities-push.md.
דף זה תורגם באמצעות בינה מלאכותית. למידע המדויק והעדכני ביותר, עיין בגרסה האנגלית.