יום 39 בלמידת MERN Stack
אני נמצא ביום ה-39 במסע שלי עם ה-MERN stack.
אתמול למדתי פועלי HTTP כמו GET ו-POST. היום התמקדתי בפעולות backend. למדתי כיצד שרתים מטפלים ב-data streams וב-body parsing.
כשמשתמש שולח טופס או קובץ, השרת לא מקבל את הכל בבת אחת. הנתונים מגיעים בחלקים קטנים. החלקים האלו נקראים chunks.
Node.js משתמש ב-streams כדי לחסוך בזיכרון. הוא לא טוען קובץ גדול לזיכרון השרת באופן מיידי. במקום זאת, הוא מטפל בנתונים בחלקים קטנים.
כך תהליך העבודה עובד:
- נתוני POST נכנסים מתפקדים כ-Readable Stream.
- השרת מקבל chunks קטנים של נתונים בינאריים.
- עליך לאסוף את ה-chunks האלו לפני שאתה משתמש בנתונים.
ב-Node.js, אתה לא מקבל request body באופן מיידי. אתה מאזין לאירועי רשת ספציפיים:
req.on("data"): אירוע זה מופעל בכל פעם ש-chunk חדש מגיע. אתה שומר את ה-chunks האלו במערך (array).req.on("end"): אירוע זה מופעל כשה-stream מסתיים. זה אומר לך שכל הנתונים הגיעו.
אתה משתמש ב-Buffer.concat כדי לחבר את החלקים. לאחר מכן אתה ממיר אותם למחרוזת (string).
השיטה הזו שומרת על השרת שלך מהיר ויעיל. היא מונעת קריסות זיכרון בעת טיפול בקבצים גדולים.
מקור: https://dev.to/ali_hamza_589ec7b3eb6688d/day-39-of-learning-mern-stack-hkp