PracticU

עדכון מלא של מוצר ב-MySQL

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › עדכון מלא של מוצר ב-MySQL
מילון מושגים:
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
רשומה - שורה בטבלת מסד נתונים שמרכזת את כל השדות של פריט אחד, למשל כל הפרטים של לקוח יחיד.
קונטרולר - רכיב שמתווך בין הממשק לבין הלוגיקה והנתונים, מקבל בקשות ומחליט כיצד לטפל בהן (למשל בדפוס MVC).
PUT - שיטת HTTP לשליחת נתונים לשרת כדי ליצור או להחליף משאב קיים במלואו.
נתיב - מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
Postman - כלי לבדיקת API: שליחת בקשות HTTP לשרת ובחינת התגובות, נפוץ בפיתוח ובבדיקות.

עדכון מלא של מוצר ב-MySQL
בשיעור מטפלים בעדכון מלא של מוצר: הלקוח שולח את כל השדות, והשרת מעדכן את הרשומה לפי המזהה שלה.
השלבים העיקריים
1. נקודת הקצה: הקונטרולר מקבל קריאת PUT עם המזהה בנתיב ואת כל הערכים בגוף הבקשה. לפני העדכון מתבצעת בדיקת Joi.
2. פקודת UPDATE: השאילתה מעדכנת את השם, המחיר והמלאי של המוצר. ערך טקסטואלי נכתב בגרשיים, וערך מספרי נכתב בלי גרשיים.
3. תנאי WHERE: בלי WHERE יתעדכנו כל הרשומות בטבלה, ולכן התנאי מוגדר לפי המזהה של המוצר בלבד.
4. בדיקת השורות שהושפעו: אם affectedRows שווה ל-0, המוצר לא קיים. במקרה כזה מוחזר null, והקונטרולר עונה 404.
5. החזרת המוצר: אם העדכון הצליח, מוחזר המוצר המעודכן.
טעויות נפוצות
בגרסה הראשונה הפונקציה החזירה תמיד את המוצר שנשלח, גם כשלא עודכן בבסיס הנתונים. לקוח שמנסה לעדכן מוצר שלא קיים היה מקבל תשובה תקינה, בלי לדעת שום דבר השתנה.
בדיקה ב-Postman
עדכון של מוצר 80 הצליח. עדכון של מוצר 800, שלא קיים, החזיר 404 אחרי התיקון. בדיקה ב-MySQL הראתה שהשינוי נשמר בטבלה.
בסוף השיעור אפשר לעדכן מוצר קיים בצורה מלאה, ולהחזיר 404 למוצר שלא נמצא.
השיעור הבא בקורס: עדכון חלקי של מוצר ב-MySQL

פרקי ההרצאה: עדכון מלא של מוצר ב-MySQL

  1. 00:00

    הפרדה בין עדכון מלא לעדכון חלקי

  2. 01:04

    חשיפת נתיב PUT בקונטרולר

  3. 01:40

    בדיקת קיום המוצר לפני העדכון

  4. 02:24

    בניית שאילתת UPDATE מלאה

  5. 03:22

    תנאי WHERE למניעת עדכון כל הרשומות

  6. 04:21

    הרצת העדכון וקבלת אובייקט info

  7. 05:35

    בדיקת העדכון בפוסטמן

  8. 06:18

    שליחת גוף בקשה עם ערכים חדשים

תמלול ההרצאה: עדכון מלא של מוצר ב-MySQL

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

  1. 00:02

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

  2. 00:28

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

  3. 00:55

    בסרטון הזה אני רוצה פונקציה נפרדת update pool product async. בואו ניגש לכאן וקודם כל נחשוף אותה update full product async ובקונטרולר ניגש ל-put קיבלנו pot ID למעלה ובבאדי את כל הערכים ואז אנחנו רוצים קודם כל יש לנו פה את הבדיקה של ג'וי ולידציה ואז אנחנו מנסים לעדכן אם הוא לא הצליח

  4. 01:35

    מאיזושהי סיבה אז אנחנו סליחה אם הוא לא מצא אותו אם הוא לא מצא את המוצר אז אנחנו שולחים 404 ואם כן שולחים את המוצר המעודכן כאן אנחנו צריכים לשנות את זה ל-update full product בהמשך נעשה update partial product זה פשוט שני קטעי קוד שונים שאני רוצה לבנות אז update full product קודם כל מה היא שאילתת

  5. 02:03

    ה-sql שלנו אז בואו נבנה פה const sql String interpolation ואנחנו ראינו כשלמדנו sql basic sql הכוונה שיש לנו שאילתת update שם טבלה product set ואז איזה עמודה שווה לאיזה ערך product name שווה ואנחנו רוצים לשרשר את מה שמגיע מתוך המשתנה product כלומר product.name אבל בגלל שזה מחרוזת מבחינת שפת

  6. 02:44

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

  7. 03:01

    לא צריך לעטוף את זה בגרש גרש בגלל שאנחנו מגדירים פה ערך מספרי. רק מכרוזות ותאריכים יש לעטוף בגרש גרש. הדבר הבא אנחנו רוצים את units in stock אלו כמובן השמות שקיימים בדאטאבייס עצמו והvalue שאנחנו רוצים להכניס לתוכו זה product.stock זה מגיע מהקליינט ונמצא במודל אבל אנחנו רוצים את פקודת ה-where כי אם אנחנו לא נעשה where זה כמובן שגיאה חמורה

  8. 03:37

    הוא יעדכן את כל הרשומות כולן במידע הזה זה משהו שאנחנו כמובן לא מה ה-Ware שלנו? ה-Ware הוא שה-ProductID שווה, בואו נשתול פה את product.id, יש לנו את זה בדיוק כמו שהיה לנו פה למעלה כשעשינו פה Ware ושתלנו את ה-ID.

  9. 04:07

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

  10. 04:21

    מה אנחנו רוצים לבצע עם השאילתה הזאת? אנחנו רוצים לגשת ל-dal, יש לנו את זה פה, נקודה execute async, לתת לו את ה-sql. הוא לא מחזיר לנו במקרה הזה טבלה אלא שוב אובייקט אינפו.

  11. 04:44

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

  12. 05:00

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

  13. 05:28

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

  14. 05:45

    נגלול פה למטה. כאן אנחנו רואים שיש לנו מוצר עם ID 80, הוא היה בננה, 5-7, לא היו ערכים במלאי. אוקיי, בסדר.

  15. 05:57

    בואו ניגש לפוט. האמת שאולי כדאי להעתיק את כל זה. לתוך put body row json נדביק ונגיד לו כזה דבר כאן אנחנו רוצים ID 80 כאן אנחנו בכלל לא רוצים ID כי ID לא אמור להיות ב-body פה אנחנו רוצים במקום בננה אנחנו רוצים בננה במקום 57 אנחנו רוצים 82 ובמקום 0 פריטים במלאי אנחנו רוצים 250 פריטים במלאי אוקיי

  16. 06:40

    בואו נבדוק את זה ונרווח פה ונריץ ואנחנו רואים שהוא החזיר

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

ההרצאה הקודמת: הוספת מוצר חדש ל-MySQL

ההרצאה הבאה: עדכון חלקי של מוצר ב-MySQL

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

  • עדכון מוצר בריאקט
  • עדכון מלא ב-SQL Database
  • הרצאה על Azure MySQL
  • התקנה של mysql

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

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