MERN Stack শেখার ৩৯তম দিন
আমি আমার MERN stack শেখার যাত্রার ৩৯তম দিনে আছি।
গতকাল আমি GET এবং POST-এর মতো HTTP verbs নিয়ে পড়াশোনা করেছি। আজ আমি backend operations-এর ওপর গুরুত্ব দিয়েছি। সার্ভার কীভাবে data streams এবং body parsing হ্যান্ডেল করে তা আমি শিখেছি।
যখন একজন ব্যবহারকারী কোনো ফর্ম বা ফাইল পাঠান, সার্ভার সেটি একবারে পায় না। ডেটা ছোট ছোট অংশে আসে। এই অংশগুলোকে chunks বলা হয়।
মেমরি বাঁচাতে Node.js streams ব্যবহার করে। এটি কোনো বড় ফাইল সরাসরি আপনার সার্ভারের মেমরিতে লোড করে না। পরিবর্তে, এটি ডেটাকে ছোট ছোট অংশে হ্যান্ডেল করে।
প্রক্রিয়াটি যেভাবে কাজ করে তা নিচে দেওয়া হলো:
- আগত POST data একটি Readable Stream হিসেবে কাজ করে।
- সার্ভার বাইনারি ডেটার ছোট ছোট chunks গ্রহণ করে।
- ডেটা ব্যবহার করার আগে আপনাকে অবশ্যই এই chunks গুলো সংগ্রহ করতে হবে।
Node.js-এ আপনি তাৎক্ষণিকভাবে request body পান না। আপনাকে নির্দিষ্ট network events-এর জন্য লিসেন করতে হয়:
req.on("data"): প্রতিবার যখন একটি নতুন chunk আসে, তখন এই event-টি ট্রিগার হয়। আপনি এই chunks গুলো একটি array-তে সেভ করেন।req.on("end"): যখন stream শেষ হয়, তখন এই event-টি ট্রিগার হয়। এটি আপনাকে জানায় যে সমস্ত ডেটা এসে গেছে।
টুকরোগুলো জোড়া দেওয়ার জন্য আপনি Buffer.concat ব্যবহার করেন। তারপর সেগুলোকে একটি string-এ রূপান্তর করেন।
এই পদ্ধতিটি আপনার সার্ভারকে দ্রুত এবং দক্ষ রাখে। বড় ফাইল হ্যান্ডেল করার সময় এটি মেমরি ক্র্যাশ হওয়া রোধ করে।
উৎস: https://dev.to/ali_hamza_589ec7b3eb6688d/day-39-of-learning-mern-stack-hkp