PracticU

חיבור של NodeJS ל-MongoDB

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › חיבור של NodeJS ל-MongoDB
מילון מושגים:
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
MongoDB - מסד נתונים מסוג NoSQL שמאחסן נתונים כמסמכים בפורמט דמוי JSON, בלי מבנה טבלאי קשיח.
REST - סגנון לבניית ממשקי API מעל HTTP, המבוסס על משאבים ועל שיטות סטנדרטיות כמו GET ו-POST.
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
npm - מנהל החבילות של Node.js, המשמש להתקנה ולניהול ספריות JavaScript בפרויקט.
Promise - אובייקט ב-JavaScript שמייצג תוצאה עתידית של פעולה אסינכרונית, שתושלם בהצלחה או תיכשל.
אסינכרוני - אופן פעולה שבו פעולה ארוכה רצה ברקע והתוכנית ממשיכה בלי להמתין לה, ומטופלת כשתסתיים.
Northwind - מסד נתונים לדוגמה של מיקרוסופט, המדמה חברת מסחר ומשמש ללימוד ולהדגמת שאילתות SQL.

חיבור של NodeJS ל-MongoDB
הפרויקט של ה-RESTful service שעבד מול MySQL עובר כאן לעבוד מול MongoDB. ההרצאה מתמקדת בשכבת הגישה לנתונים (DAL) ובחיבור הראשוני.
השלבים העיקריים
1. מעדכנים את קובץ ההגדרות: במקום פרטי MySQL מציינים את ה-host, את ה-database ואת ה-port. ל-MongoDB אין כאן user ו-password, והפורט הוא תמיד 27017.
2. מחליפים את החבילה: מריצים npm uninstall mysql ואז npm i mongodb, ובודקים ב-package.json שהחבילה התחלפה.
3. כותבים מחדש את ה-DAL: פונקציה שמחזירה Promise וקוראת ל-MongoClient.connect עם מחרוזת חיבור בצורה mongodb://host:port/database, שנבנית ב-string interpolation משלושת ערכי ההגדרות.
4. מוסיפים אפשרויות חיבור: useNewUrlParser: true ו-useUnifiedTopology: true, כדי שלא תופיע הערת deprecated בקונסול.
5. מטפלים בתוצאה: בכישלון קוראים ל-reject. בהצלחה לוקחים mongoClient.db(...) עם שם המסד ומבצעים resolve על אובייקט המסד.
6. מתחברים פעם אחת: פונקציית getDatabase שומרת את האובייקט במשתנה db, מתחברת רק אם הוא עדיין לא קיים, בתוך try/catch, ומחזירה אותו. רק היא נחשפת עם module.exports.
7. קוראים לה מה-business logic: מכיוון שהפונקציה אסינכרונית, צריך await, ואי אפשר להשתמש בו מחוץ לפונקציית async. לכן עוטפים את הקריאה ב-IIFE אסינכרונית (Immediately Invoked Function Expression), שמציבה את אובייקט המסד.
8. בודקים: מריצים node app ומקבלים הודעה שהתחברנו למסד Northwind ב-MongoDB.
שימו לב
- הפרויקט נקרא עכשיו products logic בלבד, וה-business logic השני מדוגמת MySQL נמחק.
- ה-REST service עדיין לא עובד מול המסד. הפונקציות עצמן ייבנו בהרצאות הבאות.
אחרי ההרצאה השירות מתחבר ל-MongoDB ושומר חיבור אחד לשימוש חוזר.
השיעור הבא בקורס: שליפת כל המוצרים מתוך MongoDB

פרקי ההרצאה: חיבור של NodeJS ל-MongoDB

  1. 00:00

    המרת פרויקט מ-MySQL ל-MongoDB

  2. 00:42

    הגדרות התחברות ופורט 27017

  3. 01:21

    הסרת חבילת MySQL מה-DAL

  4. 02:15

    התקנת חבילת MongoDB

  5. 02:53

    כתיבת פונקציית התחברות עם Promise

  6. 03:32

    בניית ה-Connection String

  7. 05:48

    אפשרויות UrlParser ו-UnifiedTopology

  8. 07:37

    טיפול בהצלחה או כישלון החיבור

תמלול ההרצאה: חיבור של NodeJS ל-MongoDB

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

  1. 00:04

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

  2. 00:28

    אז קודם כל בכדי לבצע את ההתחברות אנחנו רוצים להגיע לקובץ הקונפיגורציה. קובץ הקונפיגורציה הגדיר הגדרות התחברות ל-MySQL. מה ההגדרות שאנחנו צריכים לשנות?

  3. 00:42

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

  4. 01:03

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

  5. 01:18

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

  6. 01:36

    זה אומר שהתקנו בעבר את MySQL ואנחנו יכולים להסיר את ההתקנה npm uninstall mysql כי אנחנו לא הולכים להתעסק יותר עם mysql. בואו נריץ את זה ויש לנו פה הסרה של mysql אם אנחנו מסתכלים על הפאקד ג'ייסון אנחנו רואים שאין לנו פה יותר את mysql ואם אנחנו הולכים ל-node modules לא אמור להיות לנו פה תיקיית mysql כי המערכת אמורה להסיר אותה.

  7. 02:10

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

  8. 02:36

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

  9. 02:53

    הדבר הראשון שאנחנו רוצים זה const mongo db require mongo db. הדבר הבא שאנחנו רוצים זה function שמבצעת את ההתחברות. היא מבצעת התחברות באופן אסינכרוני.

  10. 03:13

    אנחנו מחזירים promise. יש לנו כאן resolve reject. פה חסר לי רק סוגריים כמובן. ואנחנו רוצים לגשת למונגו db.mongo-client.connect.

  11. 03:38

    עכשיו אנחנו צריכים לתת מחרוזת, בואו רגע נתאר בדיוק איזה מחרוזת זאת. המחרוזת הולכת בפורמט הבא: mongo db.2/ כאילו פרוטוקול ששייך למונגו db, לאחר מכן ה-host, localhost, לאחר מכן ה-port, זה היה 270/17, ואז שם הדאטאביית'

  12. 04:01

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

  13. 04:24

    לכן בואו ניקח כאן String Interpolation ונרשום MongoDB.slash/ ונכניס כאן את mongo db host לאחר מכן יש לנו כאן את הנקודותיים לאחר מכן עוד פרמטר שאנחנו מכניסים וזה יהיה config.mongo db.

  14. 04:56

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

  15. 05:24

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

  16. 05:52

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

  17. 06:09

    יש שני פרמטרים שאם אנחנו לא נותנים אותם, אז אנחנו נקבל איזושהי הערת Deprecated כזאת בקונסול. נכון להיום, אולי באיזושהי גרסה עתידית יטפלו בהערה הזאת, כרגע מה שאנחנו צריכים זה use new url-parser-true ויש לנו use unified-apology-true אוקיי?

  18. 06:35

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

  19. 07:03

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

  20. 07:21

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

  21. 08:07

    יש לנו פה רק את זה שסוגר את הפונקציה הזאת, זה אנחנו לא צריכים. אם הקישור מצליח, בואו נתחיל עם הקישור נכשל. אם הקישור נכשל, יש לנו שגיאה, אנחנו רוצים to reject ולסיים.

  22. 08:28

    אם הקישור מצליח, בואו ניקח את ה-database עצמו, mongo-client.db,

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

ההרצאה הקודמת: יבוא ויצוא של מסד נתונים

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

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

  • מבוא ל-MongoDB
  • חיבור ל-MySQL - פרויקט NodeJS
  • חיבור מרחוק עם SSH
  • מסד נתונים NoSQL - MongoDB

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

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