PracticU

שליפת קטגוריה עם כל המוצרים שלה - MongoDB Join

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

שליפת קטגוריה עם כל המוצרים שלה - MongoDB Join
הפעם ה-join הפוך: מביאים קטגוריות, ולכל קטגוריה את רשימת המוצרים שלה. זו הרצאה אחרונה בסדרת העבודה הישירה מול MongoDB.
השלבים העיקריים
1. פונקציה חדשה: getCategoriesIncludingProducts, בלשון רבים, כי לכל קטגוריה יש הרבה מוצרים. מעתיקים את הקוד של ההרצאה הקודמת.
2. שינוי ה-collection: ניגשים ל-categories במקום ל-products.
3. שינוי ה-$lookup: from הוא products, localField הוא _id, foreignField הוא categoryId, ושם המערך החדש הוא products.
4. בלי $unwind: כאן רוצים שיישאר מערך של מוצרים, ולכן מסירים אותו.
5. route בקונטרולר: נתיב categories-including-products. בבדיקה ב-Postman רואים לכל קטגוריה את ה-_id, השם והתיאור, ומערך המוצרים שלה, למשל לקטגוריה Beverages יש בין השאר את chai.
המרצה משווה זאת ל-left join מול right join ב-SQL.
מה הלאה
בסדרה הבאה עוברים ל-ORM, כלומר Object Relational Mapper, שמאפשר לעבוד עם אובייקטים מותאמים במקום לפנות ישירות ל-db.collection. אחד הנפוצים עם MongoDB נקרא mongoose.
אחרי ההרצאה קיים כל מה שנדרש ל-RESTful service שחושף מידע מ-MongoDB.

פרקי ההרצאה: שליפת קטגוריה עם כל המוצרים שלה - MongoDB Join

  1. 00:00

    הבאת קטגוריה עם כל מוצריה

  2. 00:39

    פונקציית Get Categories Including Products

  3. 01:24

    aggregate ו-lookup על Categories

  4. 02:02

    הסרת unwind והתאמת הקונטרולר

תמלול ההרצאה: שליפת קטגוריה עם כל המוצרים שלה - MongoDB Join

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

  1. 00:03

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

  2. 00:22

    אז הפונקציה שאנחנו רוצים לבנות בביזנס לוג'יק היא get categories including products שימו לב שכאן get product including category ביחיד כי לכל מוצר יש קטגוריה אחת.

  3. 00:41

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

  4. 00:59

    מה אנחנו רוצים כאן? אנחנו רוצים את ה-collection לא products אלא categories. יש לנו קולקשן כזה. אנחנו שוב רוצים אגריגייט בכדי לבצע את אותו ג'וין לוקאפ שלנו פרום בואו נראה לוקל פילד אמור להיות האנדרליין איי-די פרום איזה טבלה אנחנו רוצים לגשת אליה פרודקטס מה הפורן קי שיש בפרודקטס

  5. 01:33

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

  6. 01:51

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

  7. 02:38

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

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

ההרצאה הקודמת: שליפת מוצר יחד עם הקטגוריה שלו - MongoDB Join

ההרצאה הבאה: חיבור של NodeJS ל-Mongoose

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

  • מבוא ל-MongoDB
  • Qlik Join - חלק 1
  • פקודת Select עם Join
  • שליפת מידע עם Azios

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

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