CodeBlanks Logo Icon CodeBlanks

Transform stream

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

index.js
// 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

index.js
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

Soru
cb(null, chunk.toString().to____Case());
Cevap
cb(null, chunk.toString().toUpperCase());

Açıklama: toUpperCase harfleri büyütür.

2 Transform stream'in temel görevi nedir?

index.js
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

Orta seviye bölümündeki tüm dersler