PracticU

שמירת מידע בקובץ JSON - קורס NodeJS

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › שמירת מידע בקובץ JSON - קורס NodeJS
מילון מושגים:
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
Northwind - מסד נתונים לדוגמה של מיקרוסופט, המדמה חברת מסחר ומשמש ללימוד ולהדגמת שאילתות SQL.
אסינכרוני - אופן פעולה שבו פעולה ארוכה רצה ברקע והתוכנית ממשיכה בלי להמתין לה, ומטופלת כשתסתיים.
UTF-8 - שיטת קידוד נפוצה של Unicode, שמייצגת כל תו במספר משתנה של בתים ותואמת ל-ASCII.
Promise - אובייקט ב-JavaScript שמייצג תוצאה עתידית של פעולה אסינכרונית, שתושלם בהצלחה או תיכשל.
קונטרולר - רכיב שמתווך בין הממשק לבין הלוגיקה והנתונים, מקבל בקשות ומחליט כיצד לטפל בהן (למשל בדפוס MVC).

שמירת מידע בקובץ JSON - קורס NodeJS
השיעור שומר את המוצרים בקובץ JSON, כדי שמידע שנוסף לא יעלם כשהשרת נסגר והופעל מחדש.
הצעדים
1. הבעיה: מערך שיושב בזיכרון מתאפס בכל הפעלה מחדש של השרת, ולכן כל מוצר שנוסף יעלם.
2. קובץ products.json: הנתונים עוברים לקובץ JSON בתיקיית הפרויקט. הקובץ מכיל 77 מוצרים של חברה לדוגמה בשם Northwind, עם ID, שם, מחיר ומלאי.
3. קריאה אסינכרונית: שכבת הנתונים משתמשת ב-fs.readFile עם קידוד utf-8, וממירה את התוכן לאובייקטים בעזרת JSON.parse. הקריאה עטופה בהבטחה (Promise) שמחזירה שגיאה במקרה של כשל.
4. שמירה: JSON.stringify עם הזחה של 4 רווחים שומר את הקובץ קריא לעין. הכתיבה נעשית ב-fs.writeFile.
5. async ו-await: שכבת הלוגיקה והקונטרולר הופכים לאסינכרוניים, כדי להמתין לקריאה מהקובץ בלי לתקוע את השרת.
שימו לב
- בלי await הקונטרולר מחזיר תשובה ריקה, כי הוא לא ממתין לתוצאה של הקריאה לקובץ.
- כך נשמרים כל השינויים, והמוצרים שנוספו נשארים גם אחרי הפעלה מחדש. בהמשך יוחלף הקובץ בבסיס נתונים.
השיעור הבא בקורס: הוספת מוצר חדש - קורס NodeJS

פרקי ההרצאה: שמירת מידע בקובץ JSON - קורס NodeJS

  1. 00:00

    למה צריך לשמור את המוצרים לקובץ

  2. 01:34

    שמירה בקובץ JSON במקום זיכרון

  3. 02:12

    קובץ products.json של Northwind

  4. 03:16

    חיבור לקובץ עם File System

  5. 03:53

    קריאה אסינכרונית של כל המוצרים

תמלול ההרצאה: שמירת מידע בקובץ JSON - קורס NodeJS

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

  1. 00:03

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

  2. 00:17

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

  3. 00:35

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

  4. 00:50

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

  5. 01:12

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

  6. 01:32

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

  7. 01:47

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

  8. 02:09

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

  9. 02:38

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

  10. 02:53

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

  11. 03:10

    אז אם אנחנו מסתכלים על ה-Data Access Layer קודם כל אין לנו כבר כזה קובץ DB אנחנו רוצים לבצע פעולה אחרת. בואו נראה איזה שינויים אנחנו צריכים לעשות בשביל להתחבר לקובץ הזה. בגלל שאנחנו מתעסקים עם קבצים אז אנחנו צריכים File System.

  12. 03:28

    בואו נבצע require לפייל סיסטם. אנחנו רוצים את ה-file name, מה השם של הקובץ? השם של הקובץ צריך להיות יחסית ל-root, לתיקיית root שלנו, אז יש לנו פה נקודה סלאש והוא נמצא בתיקייה שנקראת דאטאבייס ובתוכה הוא נקרא products.json.

  13. 03:52

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

  14. 03:57

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

  15. 04:31

    אז מה שראינו זה להחזיר promise שיש בו resolve rechecked והוא מפעיל את הפונקציה ומה שאנחנו רוצים לבצע בפונקציה הזאת זה לגשת לפייל סיסטם read file לא read file sync אלא אסינכרוני הנה ה-file name שיש לנו הנה אנחנו רוצים לקרוא אותו כ-utf-8 מפני שזה תכלס מחרוזת

  16. 05:02

    של utf-8. ברגע שאתה מסיים לקרוא את הקובץ תקרא לפונקציה הזאת שאו שמקבלת אובייקט שגיאה או שאם אין שגיאה היא מקבלת את ה-file-content תוכן של הקובץ.

  17. 05:15

    אם הייתה שגיאה אנחנו רוצים to reject את השגיאה ולא להמשיך הלאה. אם לא הייתה שגיאה אנחנו רוצים להפוך את כל

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

ההרצאה הקודמת: חלוקה למודולים - קורס NodeJS

ההרצאה הבאה: הוספת מוצר חדש - קורס NodeJS

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

  • JSON
  • מה זה JSON
  • שמירת מידע בטלפון - Storage
  • הערות בקובץ YML

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

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