דלג לתוכן הראשי
אתה צופה בתיעוד למפתחים
תיעוד זה מיועד למפתחים העובדים עם פלטפורמת המפתחים של Base44. למידע על ניהול נתוני האפליקציה באמצעות עורך האפליקציות, ראה ניהול נתוני אפליקציה.
Entities מוגדרים באמצעות JSON Schema המתאר את מבנה הנתונים וכללי ה-validation.

מבנה schema בסיסי

Entity schemas מוגדרים בקבצי JSON בתיקיית ה-entities של הפרויקט שלך. כברירת מחדל, זה base44/entities/, אבל אתה יכול להתאים את הנתיב בתצורת הפרויקט שלך. שם הקובץ קובע את שם ה-entity. לדוגמה, Task.json יוצר entity בשם Task. הנה תבנית של entity schema:

שדות מובנים

כל רשומת entity כוללת אוטומטית את השדות הבאים. אל תגדיר שדות עם שמות אלה ב-schema שלך. שדות פנימיים לא מוחזרים בתגובות API אבל ניתנים להפניה בsecurity rules.

שדות Schema

string
מזהה מחרוזת עבור ה-entity.
string
נדרש
חייב להיות "object".
string
שם תצוגה ידידותי למשתמש.
string
תיאור של מה ה-entity מייצג.
object
נדרש
אובייקט המכיל את הגדרות השדה שלך. לכל שדה יש type וכללי validation אופציונליים.

סוגי שדה

Entities תומכים בסוגי שדה שונים כדי להגדיר סוגי נתונים שונים שניתן לאחסן: string, integer, number, boolean, array, ו-object. כל שדה בתוך properties דורש type. בהתבסס על הסוג, אתה יכול להוסיף אפשרויות validation.

שדות String

שדות string תומכים באפשרויות אלו:
  • minLength / maxLength: שלוט במספר תווים מינימלי ומקסימלי.
  • pattern: ביטוי רגולרי ל-validation מותאם.
  • format: פורמטים מוגדרים מראש. ערכים נתמכים:
    • "date"
    • "date-time"
    • "time"
    • "email"
    • "uri"
    • "hostname"
    • "ipv4"
    • "ipv6"
    • "uuid"
  • enum: הגבל לערכים ספציפיים מותרים. הגדר כמערך: ["value1", "value2", "value3"].
  • default: ערך ברירת מחדל אם לא סופק.

שדות Integer

שדות integer תומכים באפשרויות אלו:
  • minimum / maximum: הגדר גבולות תחתון/עליון כולל.
  • default: ערך ברירת מחדל אם לא סופק.

שדות Number

שדות number תומכים באפשרויות אלו:
  • minimum / maximum: הגדר גבולות תחתון/עליון כולל.
  • default: ערך ברירת מחדל אם לא סופק.

שדות Boolean

שדות boolean תומכים באפשרויות אלו:
  • default: ערך ברירת מחדל אם לא סופק.

שדות Array

שדות array תומכים באפשרויות אלו:
  • items: הגדר את ה-type/schema עבור אלמנטים של array.
  • default: ערך array ברירת מחדל אם לא סופק.

שדות Object

שדות object תומכים באפשרויות אלו:
  • properties: הגדר את השדות בתוך האובייקט.
  • required: רשימה של שמות מאפיינים נדרשים.

שדות נדרשים

ציין אילו שדות חייבים להיות מסופקים:

ייחודיות

Base44 entities אינם תומכים באילוצי ייחודיות. מאפיין שאינו חלק מפורמט ה-schema, כמו unique_fields, נשמר עם ה-schema שלך ומתעלמים ממנו.
כדי להימנע מרשומות כפולות, בדוק אם יש רשומה קיימת בפונקציית backend לפני שאתה יוצר חדשה. בדיקה כזו מצמצמת את החלון לרשומות כפולות אך אינה סוגרת אותו. כדי לוודא שרק משתמש אחד יצליח, השתמש בדפוס התפיסה שבעדכונים מקבילים.

עדכונים מקבילים

Base44 לא נועלת רשומות ולא מריצה טרנזקציות על פני כמה רשומות. כששני משתמשים או תהליכים משנים את אותם נתונים בו זמנית, כל כתיבה מתבצעת בנפרד. הסעיף הזה מסביר אילו עדכונים הם אטומיים, איך לתפוס רשומה בבטחה, ומה לצפות מקריאות שכותבות כמה רשומות.

תפיסת רשומה בבטחה

כדי לוודא שרק משתמש אחד יכול לתפוס רשומה קיימת, כמו משימה או משבצת הזמנה, קרא ל-updateMany() עם ה-id של הרשומה הבודדת ועם התנאים שחייבים עדיין להתקיים. העדכון מתבצע רק אם התנאים עדיין מתקיימים ברגע הכתיבה. כך, כששני משתמשים מנסים בו זמנית, רק אחד מהם מצליח. בדוק את updated בתגובה כדי לדעת אם הניסיון שלך הצליח.
התנאים נבדקים שוב ברגע הכתיבה רק כשהשאילתה מציינת id של רשומה בודדת כערך פשוט. כל שאילתה אחרת, כולל כמה מזהים ב-$in או ב-$or, מוצאת קודם את הרשומות התואמות ורק אז מעדכנת אותן. לכן רשומה שהשתנתה בינתיים עדיין עלולה להתעדכן.

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

bulkCreate(), bulkUpdate(), updateMany(), deleteMany() ו-upsert() אינן טרנזקציות. כל רשומה נכתבת בנפרד, כך שאם קריאה נכשלת באמצע, הרשומות שכבר נכתבו נשארות. תכנן את הקריאות האלה כך שיהיה בטוח להריץ אותן שוב, לדוגמה על ידי סינון רשומות שכבר עודכנו. קריאות upsert() מקבילות עם אותו מפתח עלולות ליצור רשומות כפולות.

דוגמה מלאה

הנה entity schema שלם:

פריסת entities

לאחר הגדרת ה-entity schema שלך, פרוס אותו ל-Base44 באמצעות entities push. Entities נפרסים גם אוטומטית כאשר אתה מריץ את פקודת deploy כדי לפרוס את כל הפרויקט שלך. לאחר הפריסה, אתה יכול לתקשר עם ה-entities שלך באמצעות מודול ה-entities של ה-SDK. שם ה-entity ב-schema שלך חייב להתאים בדיוק לאופן שבו אתה ניגש אליו ב-SDK, כולל אותיות גדולות. לדוגמה, אם ל-schema שלך יש "name": "Task", אתה חייב לגשת אליו כ-base44.entities.Task.list(). ניתן לצפות ב-entity schemas שנפרסו בלוח הבקרה בקטע Data.

ראה גם

  • User Schema: entity מובנה מיוחד לאימות משתמשים
  • Security: הגדר כללי row-level security עבור entities
  • Project Structure: כיצד entity schemas משתלבים בפרויקט שלך
דף זה תורגם באמצעות בינה מלאכותית. למידע המדויק והעדכני ביותר, עיין בגרסה האנגלית.