Loading lessons...
Node.js Streams & Pipelines
Streaming Large Datasets
Streams process data chunk-by-chunk sequentially without loading the entire dataset into RAM at once.
Types of Streams in Node.js
- Readable: Source from which data is read (e.g.
fs.createReadStream,reqin Express). - Writable: Destination where data is written (e.g.
fs.createWriteStream,resin Express). - Duplex: Stream that is both Readable and Writable (e.g. TCP Socket).
- Transform: Duplex stream that modifies or transforms data as it is read/written (e.g.
zlib.createGzip()).
Piping Streams
const fs = require("node:fs");
const zlib = require("node:zlib");
const { pipeline } = require("node:stream/promises");
async function compressFile() {
try {
await pipeline(
fs.createReadStream("large_log.txt"),
zlib.createGzip(),
fs.createWriteStream("large_log.txt.gz")
);
console.log("File compression completed!");
} catch (err) {
console.error("Stream Pipeline failed:", err);
}
}
compressFile();
TL;DR
- Streams save memory by handling data in chunks (Buffers).
- Use
stream/promisespipeline()to pipe streams safely with automatic error handling.