MERN Stack शिकण्याचा ३९ वा दिवस
मी माझ्या MERN stack प्रवासाच्या ३९ व्या दिवशी आहे.
काल मी GET आणि POST सारख्या HTTP verbs चा अभ्यास केला. आज मी backend operations वर लक्ष केंद्रित केले. सर्व्हर्स डेटा स्ट्रीम्स (data streams) आणि बॉडी पार्सिंग (body parsing) कसे हाताळतात, याचा मी अभ्यास केला.
जेव्हा एखादा वापरकर्ता फॉर्म किंवा फाईल पाठवतो, तेव्हा सर्व्हरला ती सर्व माहिती एकाच वेळी मिळत नाही. डेटा लहान तुकड्यांमध्ये येतो. या तुकड्यांना chunks असे म्हणतात.
Node.js मेमरी वाचवण्यासाठी streams चा वापर करते. ते मोठी फाईल लगेच तुमच्या सर्व्हरच्या मेमरीमध्ये लोड करत नाही. त्याऐवजी, ते डेटा लहान भागांमध्ये हाताळते.
ही प्रक्रिया कशी काम करते ते खाली दिले आहे:
- येणारा POST डेटा 'Readable Stream' म्हणून काम करतो.
- सर्व्हरला बायनरी डेटाचे (binary data) लहान chunks प्राप्त होतात.
- डेटा वापरण्यापूर्वी तुम्हाला हे chunks गोळा करावे लागतात.
Node.js मध्ये, तुम्हाला त्वरित request body मिळत नाही. तुम्हाला विशिष्ट नेटवर्क इव्हेंट्सवर (network events) लक्ष द्यावे लागते:
req.on("data"): जेव्हा जेव्हा नवीन chunk येतो, तेव्हा हा इव्हेंट ट्रिगर होतो. तुम्ही हे chunks एका array मध्ये सेव्ह करता.req.on("end"): जेव्हा स्ट्रीम संपते, तेव्हा हा इव्हेंट ट्रिगर होतो. याचा अर्थ असा की सर्व डेटा प्राप्त झाला आहे.
तुकडे एकत्र करण्यासाठी तुम्ही Buffer.concat वापरता. त्यानंतर तुम्ही त्यांचे स्ट्रिंगमध्ये (string) रूपांतर करता.
ही पद्धत तुमचा सर्व्हर वेगवान आणि कार्यक्षम ठेवते. मोठ्या फाईल्स हाताळताना यामुळे मेमरी क्रॅश होण्यापासून बचाव होतो.
स्रोत: https://dev.to/ali_hamza_589ec7b3eb6688d/day-39-of-learning-mern-stack-hkp