
product.validatePost ומקבלים אובייקט שגיאות. אם יש שגיאות, מבצעים render לאותו דף products/create (בלי redirect) ומעבירים גם את המוצר וגם את errors.value, עם אופרטור טרינרי: אם typeof product הוא undefined (הדף נטען לראשונה) מציגים מחרוזת ריקה, אחרת את השם, המחיר או המלאי של המוצר.client-errors.ejs. אם typeof errors שונה מ-undefined, מציגים פסקה בקלאס error עם "please correct the following", ורשימה לא ממוינת. לולאת for (const err of errors) מוסיפה פריט רשימה לכל שגיאה.include של ה-partial ב-create.ejs.הטקסט המלא של הדקות הראשונות בהרצאה «טיפול בשגיאות צד לקוח» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כאשר המשתמש מוסיף לנו פריט חדש יכול להיות שיש לו כאן איזה שהם שגיאות ולידציה שאנחנו צריכים לבדוק. ולידציה אמרנו תמיד בודקים גם בקליינט וגם בסרבר.
למעשה הסרבר יותר חשוב מהקליינט כי האקרים יכולים לעקוף את הבדיקות בקליינט ולשלוח לנו כל מה שהם רוצים מבלי שהקליינט יבדוק אותם. הסרבר תמיד מבצע ולידציה.
הקליינט יבצע ולידציה ברוב המקרים היכן שניתן, כלומר בג'אווה סקריק בצד הקליינט בכדי לחסוך עבודה מיותרת לסרבר או לחסוך זמן גלישה לסרבר ועבודת סרבר.
אז אנחנו לא מתעסקים כרגע עם קליינט סייד ולידיישן וזה עושים בג'אווה סקריק בצד הקליינט וזה סופר חשוב.
אנחנו מתעסקים כרגע עם ולידציה בסרבר סייד ומה שאנחנו רוצים לעשות בסרבר זה לטפל בקליינט ארור כלומר בוולידציות. אז איך זה מתבצע?
מה שאנחנו צריכים לעשות קודם כל זה את כל המנגנון של הוולידציה שתמיד עשינו עם ג'וי אנחנו מבצעים פה errors = product.validatePost הנה יש לנו את הוולידציה אם יש שגיאות מה שאנחנו רוצים לעשות response.render אנחנו רוצים שוב פעם לתת לו את אותו הדף שבו הוא רואה סלאש קרייט, אנחנו לא רוצים להעביר אותו לדף אחר,
מפני שהוא מוסיף לנו כרגע מוצר חדש. אז אנחנו רוצים שהוא יישאר באותו הדף ויראה את השגיאות. בואו נעשה פה ריטרן. אבל מה השגיאות?
אז קודם כל אנחנו מחזירים לו בחזרה גם את המוצר, בשביל שהוא יראה בדיוק את המידע הקודם, וגם את השגיאות עצמם, אירובס, בצורה כזאת.
ומה שאנחנו רוצים לעשות בסרבר סייד. עכשיו בקליינט סייד אנחנו רוצים קודם כל לחזור לקריאייט ובמידה ויש שגיאה אנחנו רוצים שהוא ימשיך ויראה את הודעות השגיאה.
קודם כל גם את הודעות השגיאה וגם את המידע הקודם שלו. קודם כל בואו נבדוק רגע מה קורה אם היוזר טועה בהקשר הזה. האמת ששכחתי לעצור ולהריץ.
אנחנו רוצים לחזור to create a new product ולתת פה הודעות שגיאה, נניח name אנחנו רוצים green apple וprice אנחנו רוצים מינוס 30 ו-stock אנחנו רוצים מינוס 100 וכמובן שגיאות בואו נעשה add לא חייבים לספק תמונה תמיד נבצע add ואנחנו חוזרים לאותו הדף אבל המידע שהיה בתיבות
הטקסט נעלם כי השרת עשה רנדר מחדש אנחנו רוצים לקבל את המידע ולהשאיר אותו על הטופס. זה אומר שאנחנו צריכים עכשיו לארגן כאן המשך בתיבות של המאפיין value.
וכאן אנחנו רוצים לעבור שנייה ל-server side ולעשות פה השמה של ה-value הקודם. אבל יכול להיות שיש לנו value ויכול להיות שאין לנו value.
יכול להיות שקיבלנו את המוצר או לא קיבלנו את המוצר, זאת אומרת, יש כאן איזה משהו שאנחנו צריכים לבדוק. מה שהיינו בודקים זה דבר כזה. אופרטור טרינרי.
אם הטייפ אוף של פרודקט הוא undefined, זאת אומרת אין לנו כרגע שום מוצר קודם שהתווסף, זה אומר שאנחנו רואים את הדף לראשונה. אז מה שאנחנו רוצים לעשות זה לשים אחרוזת ריקה.
אחרת הפרודקט קיים הביאו לנו איזשהו מוצר אז בואו נשים פה את הניים שלו בצורה כזאת בואו נשכפל את כל זה גם לפה אבל הפעם נשים את הפרייס ונשכפל אותו גם לפה עם סטוק שימו לב שזה נמצא בתוך התגית זה ברמת העיקרון היה אמור להיות ככה אבל כמובן שנראה את הכל שמנו את זה בשורה מתקדמת.
אז יש לנו כרגע בדיקה האם הביאו לנו מוצר, תראה לי את הפרטים שלו, לא הביאו, תשים לי שם מידע ריק, מכרוזות ריקות. בואו נבדוק איך זה מתנהג כרגע, נחזור בחזרה, נרפרש, האמת, נחזור לריפוש כזה.
ויש לנו פה גרין אפל, מינוס עשר, מינוס עשרים, נבצע אד, וחזרנו בחזרה עם הפרטים של המוצר.
זאת אומרת, אנחנו לא הוספנו אותו לדאטה בייס, וקיבלנו בחזרה את אותו הדף עם הפרטים, כי אם הכל היה בסדר, אז הוא היה מפנה אותנו לכל המוצרים.
אבל עכשיו, מה אנחנו רוצים לעשות? אנחנו רוצים להציג כאן את השגיאות. זאת אומרת שפה אנחנו צריכים עכשיו לבנות מנגנון שמציג את השגיאות שהתקבלו לדף.
את זה אנחנו עושים ו- partial view נוסף שכמו שיש לנו server errors בואו נשכפל את זה ל- client errors כאן בגלל שזה partial אנחנו רוצים לשתול אותו בתוך אז ניפטר רגע מכל התוכן הזה ונבנה