
config.json עם אובייקט mysql שמכיל מארח, משתמש, סיסמה ושם מסד.mysql בעזרת npm.createConnection מקבלת את ההגדרות, ופונקציית connect מחזירה callback שמדווח על שגיאה או הצלחה.הטקסט המלא של הדקות הראשונות בהרצאה «חיבור של NodeJS למסד נתונים MySQL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כעת אנחנו יכולים לצלול לתוך הקוד של Node.js ולשלב כאן גישה ל-MySQL. מה שאנחנו רוצים לעשות זה להמשיך מאותו RESTful Service שבנינו בפרקים הקודמים, ופשוט במקום לחשוף את המידע מקובץ JSON שהיה לנו, אנחנו רוצים לחשוף אותו ממסד הנתונים MySQL, כמובן אותו המידע בדיוק שחשפנו.
אז דבר ראשון מה שהייתי רוצה לעשות זה לראות איך אנחנו יכולים להתאים את הפרויקט הזה ל-MySQL או ליתר דיוק להוריד את כל מה שלא צריך בו. נעשה תוך כדי איזשהו ריוויו והמטרה זה להצליח בסרטון הזה להתחבר ל-MySQL.
אז אם נבצע איזשהו ריוויו מהיר יש לנו פה כמה חלקים ובואו נעבור עליהם בזריזות יש לנו פה את האפ זה מה שמריץ את התוכנית הקובץ הראשי שקודם כל רץ יש לנו כאן את אקספרס ואת קורס שבנינו בכדי לאפשר גישה לאתרים אחרים ל-Restful Service שלנו יש לנו פה הרמה של סרבר תמיכה ב-JSON בבאדי הנה הקורס שלנו יש לנו כאן גישה
או אפשרות של גישה לקובץ אינדקס html שאנחנו יכולים להשתמש בו יש לנו כאן חשיפה של הקונטרולר, פייג' 404, כלומר אם ראוט לא נמצא, אז אנחנו מחזירים שגיאת 404 ואנחנו מרימים את הסרבר לאוויר.
Good. ובעצם ה-app.js. יש לנו כאן מודל, שהמודל בנוי מפרודקט, יש לו ID, name, price ו-stock, יש כאן ולידציה עבור המידע של המודל, אפילו דיווחנו הודעות שגיאה.
הנה כל הוולידציה שלנו, והמודל, מוצר. דבר נוסף שיש לנו כאן זה את הקונטרולר. קונטרולר מתקשר עם הקליינט שלנו, הקליינט גודש ישירות לקונטרולר, ובקונטרולר יש את הפעולות הבאות: החזרת כל המוצרים, החזרת מוצר בודד, הוספת מוצר, עדכון מוצר מלא, עדכון מוצר חלקי, ומחיקת מוצר.
זה מה שיש לנו כאן. וכל ראוט שבנינו, אז קודם כל הוא יחסי ל-Route הזה שמוגדר פה, API-Products, והוא עושה את העבודה שלו, יש לו טריי קאץ', אם יש קריסה אנחנו מחזירים שגיאת 500, אם לא אנחנו מחזירים את המידע שה-Route מטפל בו.
ה-Business Logic מבצע את הלוגיקה העסקית שלנו. אם אנחנו רוצים להביא את כל המוצרים, אנחנו פשוט מחזירים אותם. אם אנחנו רוצים להביא מוצר בודד, אנחנו פשוט מחפשים אותו, מוצאים אותו ומחזירים אותו.
יש לנו כאן הוספת מוצר, יש לנו כאן עדכון מוצר שמשמש גם לעדכון מלא וגם לעדכון חלקי, יש לנו מחיקת מוצר והביזנס לוג'יק. יש לנו בנוסף גם את ה-data access layer, וזה בעצם הגישה לכביכול דאטאביית' שיש לנו פה, הדאטאביית' שלנו הוא קובץ product json, ויש לנו כאן החזרת כל המוצרים, יש לנו כאן שמירת כל המוצרים.
ופה בדאטאבייס יש לנו את הקובץ ג'ייסון עצמו עם כל המוצרים שהיו כאן hardcoded בקובץ. מה אנחנו צריכים לעשות קודם כל בשביל להתאים את זה לפרויקט שלנו? אז אנחנו רוצים לגשת ולמחוק את product.json, delete, ביי ביי, ולמחוק את התיקייה של הדאטאבייס, delete,
ביי ביי. הדבר הבא שאנחנו רוצים לעשות זה לגשת לדל ולנקות אותו. לגמרי, אדל לא משתמש יותר עם קבצים.
כעת מה שאנחנו רוצים לעשות זה לאפשר להתחבר ל-MySQL. לצורך כך אנחנו צריכים כל מיני פרמטרים של MySQL. לכן מה שנעשה זה באחד הסרטונים היותר ישנים ראינו שאנחנו יכולים להגדיר קובץ קונפיגורציה.
בואו נעשה את זה. נגדיר קובץ קונפיגורציה, נקרא לו config.json ונגדיר בתוכו אובייקט. האובייקט הזה יגדיר את mysql כקונפיגורציה של mysql, כלומר יש לנו אובייקט בתוך אובייקט ויש לנו ארבעה פרמטרים שאנחנו צריכים להגדיר עבור mysql.
אנחנו צריכים להגדיר מי זה ה-host ובגלל שה-host זה על איזה מחשב יושב הדאטאבייס, הוא יושב על המחשב הנוכחי ויהיה localhost. יכול להיות שבמחשב אחר הוא יושב על איזושהי כתובת רשתית מסוימת או איזשהו IP אדרס אחר.
מי היוזר? יוזר זה אותו יוזר שמתחבר לדאטאבייס כרגע, שהדאטאבייס חושף אותו החוצה. בי דיפולט MySQL חושפת יוזר שנקרא רוט. אנחנו יכולים כמובן בתוך הדאטאבייס לשנות את זה, אבל כרגע זה פשוט הדיפולט ש-MySQL חושפת.
פאסוורד, מה הסיסמה לגישה לדאטאבייס? אין כרגע סיסמה לנורת'ווינד אז נגדיר סיסמה ריקה ואיזה דאטאבייס אנחנו רוצים לגשת אליו זה יהיה נורת'ווינד. הנה יש לנו את ההגדרות של התחברות למה SQL ונכון לבצע את זה באיזשהו קובץ קונפיגורציה.
הדבר הבא שהיינו יכולים לבצע או שאנחנו צריכים לבצע זה לבנות את הדל האמת לפני זה בואו נעשה כאן את הפקודה שחושפת את הקובץ הגלובלי.
גלובל נקודה קונפיג שווה require של נקודה סלאש קונפיג בצורה כזאת. וכשראינו את זה בסרטון של הקונפיגורציה הכללית, ראינו שאנחנו יכולים פשוט לייבא את קובץ ה-JSON לכאן, לאיזשהו אובייקט שנקרא קונפיג, ובתוכו יהיה לנו את האובייקט של ה-SQL עם כל הפרמטרים שלו.
גלובל, ראינו שזה אובייקט גלובלי שנחשף בכל האפליקציה, ולכן אנחנו יכולים להשתמש איתו בכל מקום, לדוגמה מהדל. מה אנחנו רוצים לעשות בתוך הדל?
דבר ראשון, אנחנו רוצים להתקין את npm-i mysql, התקנה שאנחנו צריכים לבצע שבה יש בעצם את כל מה שצריך עבור גישה למסד הנתונים mysql. התקנה אחת ויחידה.
אז היא קיימת כרגע בקובץ הפאקד ג'ייסון, הנה אנחנו כאן. הדבר הבא שאנחנו יכולים לבצע זה const mysql require של mysql בצורה כזאת. כעת יש לנו את mysql כאובייקט בדל.