Transform stream
- Node.js kursu
- Orta seviye
- Ders 11/116
- 5 dk
Transform stream ile veri dönüştürmeyi öğrenirsin.
Transform stream
Transform stream hem okur hem yazar: gelen parçayı alır, dönüştürür ve çıkan parçayı iletir. new Transform({ transform(chunk, encoding, callback) { ... } }) ile oluşturulur.
transform metodu her giriş parçası için çağrılır. Dönüştürülmüş veriyi callback(null, cikti) ile geçirirsin; ilk argüman hata (null = hata yok). Örnek: const upper = new Transform({ transform(chunk, enc, cb) { cb(null, chunk.toString().toUpperCase()); } });. upper.write("merhaba"); upper.end(); çağrısı MERHABA üretir. Çıktıyı upper.on("data", (c) => console.log(c.toString())) ile yakalarsın. Transform, pipe zincirinin orta halkasıdır.
Transform ve pipe
Transform stream'ler pipe zincirinin orta halkasıdır. kaynak.pipe(donusturucu).pipe(hedef) ile veri kaynaktan gelir, dönüştürülür ve hedefe yazılır. Bu, veriyi akışkan biçimde işlemenin deyimsel (idiomatic) yoludur.
Örnek: const upper = new Transform({ transform(c, e, cb) { cb(null, c.toString().toUpperCase()); } }); kaynak.pipe(upper).pipe(hedef);. Her parça büyütülerek hedefe akar. Tek başına da kullanılabilir: upper.write("a"); upper.on("data", (c) => console.log(c.toString())); upper.end();. Bu, A yazdırır. Transform, Readable ve Writable'ı birleştiren güçlü bir araçtır.
Uygulama Bir Transform yaz
upper adında bir Transform oluştur: transform(chunk, enc, cb) gövdesi cb(null, chunk.toString().toUpperCase()) olsun. "data" olayını dinle: her c için "Dönüştü: " + c.toString() yaz. upper.write("merhaba") çağır ve upper.end() yap.
Başlangıç kodu
// Transform içe aktar ve upper örneği oluştur
// buraya yaz
// "data" olayını dinle
// buraya yaz
// "merhaba" yaz ve end() çağır
// buraya yazÖrnek çözüm
const { Transform } = require("stream");
const upper = new Transform({
transform(chunk, enc, cb) { cb(null, chunk.toString().toUpperCase()); }
});
upper.on("data", (c) => console.log("Dönüştü: " + c.toString()));
upper.write("merhaba");
upper.end();Beklenen çıktı
Dönüştü: MERHABA
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 transform gövdesini tamamla
cb(null, chunk.toString().to____Case());
cb(null, chunk.toString().toUpperCase());
Açıklama: toUpperCase harfleri büyütür.
2 Transform stream'in temel görevi nedir?
new Transform({ transform(c, e, cb) { cb(null, c.toString().toUpperCase()); } })- Yalnızca veri okur
- Veriyi belleğe yazar
- Gelen parçayı dönüştürüp çıkan parçayı iletir Doğru cevap
- Hata fırlatır
Açıklama: Transform geleni dönüştürüp çıkarı iletir.
3 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
transform(chunk, ...) |
Giriş parçasını işler |
cb(null, çıktı) |
Dönüştürülmüş veriyi geçirir |
toUpperCase() |
Harfleri büyütür |
.pipe(transform) |
Zincire dönüştürücü ekler |