
npm uninstall mysql ואז npm i mongodb, ובודקים ב-package.json שהחבילה התחלפה.MongoClient.connect עם מחרוזת חיבור בצורה mongodb://host:port/database, שנבנית ב-string interpolation משלושת ערכי ההגדרות.useNewUrlParser: true ו-useUnifiedTopology: true, כדי שלא תופיע הערת deprecated בקונסול.mongoClient.db(...) עם שם המסד ומבצעים resolve על אובייקט המסד.getDatabase שומרת את האובייקט במשתנה db, מתחברת רק אם הוא עדיין לא קיים, בתוך try/catch, ומחזירה אותו. רק היא נחשפת עם module.exports.await, ואי אפשר להשתמש בו מחוץ לפונקציית async. לכן עוטפים את הקריאה ב-IIFE אסינכרונית (Immediately Invoked Function Expression), שמציבה את אובייקט המסד.node app ומקבלים הודעה שהתחברנו למסד Northwind ב-MongoDB.הטקסט המלא של הדקות הראשונות בהרצאה «חיבור של NodeJS ל-MongoDB» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים להתחברות ל-MongoDB דרך ה-Restful Service שבנינו. בסרטון הזה כל מה שאנחנו הולכים לעשות זה לבצע עדכון של דל. אנחנו לוקחים את הפרויקט הקודם שעובד כבר עם MySQL ועושים לו שינויים בכדי שהוא יעבוד עם MongoDB.
אז קודם כל בכדי לבצע את ההתחברות אנחנו רוצים להגיע לקובץ הקונפיגורציה. קובץ הקונפיגורציה הגדיר הגדרות התחברות ל-MySQL. מה ההגדרות שאנחנו צריכים לשנות?
אנחנו לא הולכים להתחבר יותר ל-MySQL, אנחנו הולכים להתחבר ל-MongoDB. כאן אנחנו עדיין צריכים לומר על איזה מחשב MongoDB יושב. אין לנו יוזר ופאסוורד, כן יש לנו דאטאבייס אבל יש לנו עוד משהו שנקרא פורט.
כאן מונגו די בי אנחנו צריכים לציין איזה פורט אנחנו מתחבר. ומונגו די בי עובד תמיד עם 270-17. זה הפורט שמונגו די בי מבצעת התחברות אליו.
אז יש לנו את כל ההגדרות הדרושות עבור ההתחברות, אנחנו יכולים לגשת לדל, דאטה אקסס לייר, ולראות מה אנחנו צריכים לשנות כאן בכדי להתחבר למונגו די בי. דבר ראשון, אני רואה שיש לנו כאן את ההתחברות ל-MySQL.
זה אומר שהתקנו בעבר את MySQL ואנחנו יכולים להסיר את ההתקנה npm uninstall mysql כי אנחנו לא הולכים להתעסק יותר עם mysql. בואו נריץ את זה ויש לנו פה הסרה של mysql אם אנחנו מסתכלים על הפאקד ג'ייסון אנחנו רואים שאין לנו פה יותר את mysql ואם אנחנו הולכים ל-node modules לא אמור להיות לנו פה תיקיית mysql כי המערכת אמורה להסיר אותה.
זה אמור להיות פה ואין לנו את התיקייה הזאת. אוקיי, הדבר הבא שאנחנו רוצים זה להתקין את מונגו די.בי. זה יהיה npmi מונגו די.בי. הנה אנחנו רואים שאנחנו מתקינים את זה, ואנחנו יכולים להסתכל בפאקג' ג'ייסון ולראות שיש לנו פה את מונגו די.בי עם איזושהי גרסה.
הדבר הבא שאנחנו רוצים לעשות זה לשנות את הדל כך שהוא בעצם יבצע התחברות למונגו די.בי. אז האמת, יש לנו פה יותר מדי שינויים, לכן מה שאני אעשה, אני פשוט אמחק את כל הדל ואכתוב אותו מחדש.
הדבר הראשון שאנחנו רוצים זה const mongo db require mongo db. הדבר הבא שאנחנו רוצים זה function שמבצעת את ההתחברות. היא מבצעת התחברות באופן אסינכרוני.
אנחנו מחזירים promise. יש לנו כאן resolve reject. פה חסר לי רק סוגריים כמובן. ואנחנו רוצים לגשת למונגו db.mongo-client.connect.
עכשיו אנחנו צריכים לתת מחרוזת, בואו רגע נתאר בדיוק איזה מחרוזת זאת. המחרוזת הולכת בפורמט הבא: mongo db.2/ כאילו פרוטוקול ששייך למונגו db, לאחר מכן ה-host, localhost, לאחר מכן ה-port, זה היה 270/17, ואז שם הדאטאביית'
שאנחנו רוצים להתחבר אליו. שם הדאטאביית' שלנו היה Northwind. אז אנחנו צריכים כביכול לבנות את המחרוזת הזאת, אוקיי. אז בכדי לבנות את המחרוזת אנחנו רוצים להשתמש בשלושת הפרמטרים שהוגדרו בקובץ ה-Config.
לכן בואו ניקח כאן String Interpolation ונרשום MongoDB.slash/ ונכניס כאן את mongo db host לאחר מכן יש לנו כאן את הנקודותיים לאחר מכן עוד פרמטר שאנחנו מכניסים וזה יהיה config.mongo db.
ופה היה לנו את הפורט ואז אנחנו מוצאים סלאש ולהכניס את הפרמטר האחרון שזה config.mongo והיה לנו פה את אז הנה אנחנו רואים שיש לנו כרגע את שלושת הפרמטרים שהגיעו בעצם מקובץ הקונפיגורציה.
בואו נכתוב פה פסיק כי אנחנו עכשיו צריכים לתת עוד משהו. נראה את כאן שורה ונראה את כל הקוד הזה, אולי נוריד טיפה את הגופן בכדי לראות הכל או שנעשה כזה דבר. בואו נפתח כאן קונקסט, נקרא לזה קונקשן סטרינג, נכניס את כל זה בתוך ה-ConnectionString,
ואז נוכל להעביר פה רק את ה-ConnectionString. בואו נגדיל שוב את הגופן. הדבר הבא זה, אנחנו נותנים Object Configure, זה קונפיגואציה פנימית להתחברות.
יש שני פרמטרים שאם אנחנו לא נותנים אותם, אז אנחנו נקבל איזושהי הערת Deprecated כזאת בקונסול. נכון להיום, אולי באיזושהי גרסה עתידית יטפלו בהערה הזאת, כרגע מה שאנחנו צריכים זה use new url-parser-true ויש לנו use unified-apology-true אוקיי?
יש לנו כאן את שני החבר'ה האלה. בקצרה, url-parser זה בעצם שיטה שבה הם מפרסרים את ה-connection-string בצורה קצת יותר חדשה, והטופולוג'י הזה זה איזשהו מנוע שיודע לעבוד יותר טוב עם החלקים הפנימיים של מונגו די.בי.
אז יש לנו כרגע את שתי ההגדרות האלה, אולי בהמשך יורידו אותם ולא נצטרך יותר להגדיר אותם בעצמנו. הדבר הבא שאנחנו רוצים לתת, שימו לב שהכל נכנס עדיין לפונקציה הזאת.
אולי נעשה פה את אותו טריק של מקודם. קונסט אופשיינס ניתן כאן את כל זה וניתן פה רק את האופשיינס ואז יהיה קצת יותר קל לראות את הכל. אוקיי, הדבר הבא שאנחנו צריכים לתת זאת פונקציה שמקבלת ארור ומקבלת איזה שהוא משתנה שנקרא מונגו קליינט וזאת פונקציה שתתבצע ברגע שהקישור מצליח או נכשל.
יש לנו פה רק את זה שסוגר את הפונקציה הזאת, זה אנחנו לא צריכים. אם הקישור מצליח, בואו נתחיל עם הקישור נכשל. אם הקישור נכשל, יש לנו שגיאה, אנחנו רוצים to reject ולסיים.
אם הקישור מצליח, בואו ניקח את ה-database עצמו, mongo-client.db,