PracticU

כתיבת שאילתות של MongoDB בתוך Mongoose

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › כתיבת שאילתות של MongoDB בתוך Mongoose
מילון מושגים:
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
MongoDB - מסד נתונים מסוג NoSQL שמאחסן נתונים כמסמכים בפורמט דמוי JSON, בלי מבנה טבלאי קשיח.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
מודל - רכיב שמייצג את הנתונים ואת הלוגיקה העסקית באפליקציה. גם ייצוג מופשט של מערכת או תהליך.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
Promise - אובייקט ב-JavaScript שמייצג תוצאה עתידית של פעולה אסינכרונית, שתושלם בהצלחה או תיכשל.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
תחביר - אוסף הכללים של שפת תכנות הקובעים כיצד לכתוב קוד תקין. הפרתם גורמת לשגיאת תחביר.

כתיבת שאילתות של MongoDB בתוך Mongoose
אופרטורי MongoDB Query Language עובדים ב-mongoose כמו שהם, אבל בתוך פונקציות המודל. ההרצאה ממירה את שאילתת טווח המחירים ומוסיפה סינון שדות ומיון.
השלבים העיקריים
1. מחליפים את הדרייבר הישיר: getProductsByPriceRange מחזירה Product.find({ price: { $gte: minPrice, $lte: maxPrice } }).exec(). אותו אובייקט שאילתה כמו קודם, רק בלי לבנות Promise ובלי toArray.
2. בודקים: קריאה לטווח 10 עד 12 ואחר כך 10 עד 20 מחזירה מוצרים במחירים המתאימים.
3. מסננים שדות: הפרמטר השני של find מתאר אילו שדות להחזיר, למשל "name price". עם null מקבלים הכול.
4. ממיינים: הפרמטר השלישי הוא אובייקט אפשרויות, למשל { sort: { price: 1 } }.
5. מיון משני: { sort: { price: -1, name: 1 } }. הערך 1 הוא סדר עולה ו-1- הוא סדר יורד. בבדיקה המחירים ירדו מ-20 ל-19.5, ובין שלושה מוצרים במחיר 10 הסדר היה לפי שם, בסדר עולה.
שימו לב
המרצה ממליץ לא לשנן את הסינטקס אלא לחפש בתיעוד של MongoDB ובגוגל.
אפשר עכשיו לשלב סינון, בחירת שדות ומיון בשאילתה אחת ב-mongoose.
השיעור הבא בקורס: יצירת מודל עבור קטגוריה ב-Mongoose

פרקי ההרצאה: כתיבת שאילתות של MongoDB בתוך Mongoose

  1. 00:00

    אופרטורי השאילתות של MongoDB

  2. 00:45

    שליפת מוצרים עם find ו-exec

  3. 01:30

    סינון לפי טווח מחירים

  4. 02:10

    בדיקת טווח המחירים ב-Postman

  5. 02:50

    מיון והגדרות נוספות לשאילתה

  6. 03:35

    החזרת השדות name ו-price בלבד

תמלול ההרצאה: כתיבת שאילתות של MongoDB בתוך Mongoose

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

  1. 00:03

    הדבר הבא שאנחנו רוצים לראות זה את המונגו db query language שדיברנו עליה. יש לנו כאן את כל ה-comparison query operators ויש לנו פה את האור לדוגמה וכל מיני אופרטורים אחרים שהתעסקנו איתם.

  2. 00:23

    מה שקורה במונגוס ושבייסיקלי כל הדברים האלה קיימים as is אבל אנחנו לא משתמשים בזה עם db collection כמובן אלא משתמשים בטכניקה שהשתמשנו עד עכשיו. אז אם אני הולך כאן למעלה למעלה, אני רואה שיש לי פה get all products async.

  3. 00:45

    ודרך אגב, פתאום אני רואה שבכלל אני לא צריך אותו. אין לי פה שום mongo db. ביי ביי. ואנחנו רוצים את זה, product find exec.

  4. 01:00

    בדיוק אותו עבור הפונקציה הזאת, ועשינו אותה בעבר בעזרת native mongo db. get products by price range אז אנחנו רוצים to return product find אבל מה אנחנו רוצים להגיד לו שאנחנו מחפשים בדיוק את המונגו db query language הזאת בואו נעתיק נדביק בתוך find אנחנו לא צריכים לייצר promise כי אקזק מחזירה לנו הוא פרומיס מתחילת התהליך ומחזירה פרומיס.

  5. 01:39

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

  6. 01:52

    דולר GTE זה greater than or equal, דולר LTE זה lower than or equal, זה בדיוק הטווח. בואו נראה את הקונטרולר. בקונטרולר יש לנו buy price range, מינימום, מקסימום, קיבלנו אותם, שלחנו, החזרנו את המוצרים.

  7. 02:12

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

  8. 02:30

    בואו ננסה 10 ו-20 לדוגמה ונרחיב אותו טיפה, יש לנו 18, 19, אנחנו רואים שיש לנו פה 10 עד 20. אם אנחנו רוצים לדוגמה למיין או לבצע קונפיגורציות נוספות על המידע, כמובן שכל הדברים האלה קיימים אצלנו ואנחנו יכולים להוסיף אותם פה.

  9. 03:04

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

  10. 03:18

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

  11. 03:47

    לדוגמה, name במחוז, הכוונה. אז המערכת הייתה מחזירה לנו רק מה שמכיל name ו-price. אם אנחנו רוצים להביא את הכל, null.

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

ההרצאה הקודמת: מחיקה של מוצר ב-Mongoose

ההרצאה הבאה: יצירת מודל עבור קטגוריה ב-Mongoose

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

  • מבוא ל-MongoDB
  • יצירת תת-שאילתות ב-SQL
  • יירוט שאילתות - Intercepting Queries
  • כתיבת Test Case

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

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