PracticU

התאמה אישית של הודעות שגיאה

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › התאמה אישית של הודעות שגיאה
התאמה אישית של הודעות שגיאה
ג'וי מחזירה הודעות שגיאה ברירת מחדל באנגלית, וההודעות האלה לא תמיד מתאימות למערכת. אפשר להגדיר הודעות משלנו בתוך הסכמה.
איך זה עובד
1. שגיאות לפי סוג: לכל שגיאה ב-error של ג'וי יש סוג (type). לדוגמה any.required לשדה חסר, any.empty למחרוזת ריקה ו-string.min לאורך קצר מדי.
2. מיפוי לפי סוג: עוברים על רשימת השגיאות ועושים switch לפי הסוג, וכל מקרה מחזיר הודעה שלנו.
3. ההגדרה בתוך הסכמה: לכל שדה מגדירים את פונקציית ה-error שלו, והיא מקבלת את כל השגיאות שהתרחשו ומחזירה את הרשימה לאחר המיפוי.
מה נשאר לבדוק
1. שם ריק יוצר שתי שגיאות, any.empty ו-string.min, וכל אחת מקבלת הודעה משלה.
2. את אותו הדבר צריך לעשות גם למחיר ולמלאי, כי ההודעות לא עוברות לשדות האחרים אוטומטית.
3. כשחסר מחיר, מתקבלת ההודעה המותאמת שהוגדרה.
כך אפשר לכתוב הודעות שגיאה ברורות, בלי לשנות את הבדיקות עצמן.
השיעור הבא בקורס: טיפול ב-CORS - קורס NodeJS

פרקי ההרצאה: התאמה אישית של הודעות שגיאה

  1. 00:00

    הודעות שגיאה ברירת מחדל של Joi

  2. 00:45

    הגדרת custom messages לסכמה

  3. 02:00

    פונקציית error ומערך השגיאות

  4. 03:26

    מבנה אובייקט השגיאה: type ו-message

  5. 04:06

    שגיאות מרובות על שדה אחד

תמלול ההרצאה: התאמה אישית של הודעות שגיאה

הטקסט המלא של הדקות הראשונות בהרצאה «התאמה אישית של הודעות שגיאה» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

    כאשר אנחנו ביצענו את הוולידציה על ידי ג'וי, ג'וי החזירה לנו כל מיני הודעות שגיאה במידה והיו שגיאות. בואו נבדוק שוב.

  2. 00:14

    הנה יש לנו כאן אפשרות להוסיף מוצר חדש ואנחנו בעצם לא מכניסים שם ואנחנו קובעים שהפרייס הוא מינוס ושהסטוק יותר מדי גדול. ואנחנו בעצם מנסים לגלוש והוא אומר לנו name is required, Price must be larger than or equal to 0.

  3. 00:35

    Stock must be less than or equal to 10,000. וזה נראה הודעות בסדר, אבל יכול להיות מצב שאנחנו נרצה לתת הודעות משלנו.

  4. 00:47

    אולי אני לא רוצה את הדברים האלה, אולי אני רוצה הודעה מסוגננת בצורה קצת אחרת. אז כאן אנחנו הולכים לראות איך אנחנו יכולים לומר לג'וי לתת custom messages משלנו.

  5. 01:00

    אז לצורך כך אנחנו צריכים לגשת לסכמה עצמה שבנינו, ובסכמה אנחנו צריכים להגדיר את זה, את ה-Custom Messages.

  6. 01:08

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

  7. 01:20

    זאת אומרת, הכי קל היה להגיד כזה דבר, נניח שהשדה הוא שדה שהוא שדה חובה, אז הכי קל היה להגיד, טוב, פה אני נותן לך איזושהי הודעת שגיאה שברגע שנפלת על הוולידציה הזאת זאת ההודעה שתיתן לי או לדוגמה מינימום שלושה תווים אבל אני נותן לך פה איזושהי הודעת שגיאה ואני אומר נניח name to short זה היה הכי פשוט אבל זה לא מה שקורה בג'וי לפחות לא בגרסה

  8. 01:53

    הזאת שלנו כרגע אם אנחנו רוצים לתת custom error messages אנחנו צריכים לעשות קצת יותר עבודה מזה. ומה שקורה בכל אחד מהפרמטרים יש איזושהי פונקציה שנקראת error ביחיד והפונקציה הזאת מתבצעת ברגע שהייתה שגיאה.

  9. 02:14

    הפונקציה הזאת מקבלת collection נקרא לו errors של כל השגיאות שהתרחשו. בואו נציג על ה-console את ה-collection errors. נעשה דבר כזה, נריץ את התוכנית, ניגש לפוסטמן, נבצע send, נקבל, אני רואה שאני מקבל פה שגיאה, נכון, מפני שהיו מספר שגיאות

  10. 02:42

    ועבור כל שגיאה הוא קורא לפונקציה הזאת וצריך לקבל ממנה בחזרה את אותו Object Errors בשביל להמשיך לשגיאה הבאה.

  11. 02:54

    בואו אולי ננקה אפילו את כל הטרמינל הזה, נשים את זה פה בצורה כזאת ו-node-app נגלוש שוב, go, יופי. הנה שלושת השגיאות, אנחנו רואים שהוא נפל על שלוש שגיאות, אבל אנחנו נראה שם רק את השגיאה הזאת.

  12. 03:15

    למה? מפני שרק השגיאה הזאת שייכת לפרמטר של ה-name שאנחנו הדפסנו אותו. בואו נחזור, ונראה שיש לנו פה קודם כל מערך, ובתוכו יש אובייקט אחד ויחיד, ורבייקט אחד ויחיד שיש בו מלא נתונים לגבי השגיאה מה שמעניין אותנו זה הטייפ שלה any.required ומה שמעניין אותנו זה המסאג' שלה שאנחנו לא הגדרנו לה מסאג' ולכן המסאג' זה undefined ויכול להיות מצב שהדבר הזה נפל

  13. 03:49

    בכמה מקומות הוא כרגע נפל ב-required אבל אולי הוא נופל גם לדוגמה ב-required וגם במינימום בואו ננסה רגע לראות איך הוא יכול ליפול בשניהם?

  14. 04:02

    אולי אם נעשה name מכרוזת ריקה. בואו נראה מה הוא אומר לנו. name is not allowed to be empty, ו-name length must be at least recharcted. אז הוא נפל בשני מקומות פה על ה-name.

  15. 04:16

    בואו נחזור ונראה מה הוא אומר. והפעם המערך שלו, הנה הוא כאן, מתחיל,

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: ביצוע ולידציה על Route Parameters

ההרצאה הבאה: טיפול ב-CORS - קורס NodeJS

הרצאות קשורות מקורסים אחרים

  • הודעות שגיאה בריאקט
  • התאמה אישית של Shell ו-Alias
  • התאמה של Host Profile - ל-ESXi
  • הוצאת הודעות השגיאה - מתוך ModelState

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React