Jak przygotować duży eksport bez wczytywania wszystkiego do pamięci?
Uwaga do przejrzenia: Odpowiedź odwołuje się do CV lub oferty pracy autorki materiału — dostosuj ją do własnego doświadczenia.
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
Czytam dane partiami i stopniowo je zapisuję. Nie buduję najpierw ogromnej tablicy i jednego wielkiego tekstu. Jeśli odbiorca nie nadąża z zapisem, producent danych powinien na niego poczekać. To nazywamy kontrolą napływu lub backpressure.
Na przykład odczytuję kolejne strony rekordów, zamieniam je na CSV i przesyłam do pliku. Przy dużym eksporcie wygodnie wykonać zadanie w tle i potem udostępnić gotowy plik. Trzeba ustalić, czy eksport ma przedstawiać dane z jednego momentu, czy może zawierać zmiany zachodzące w trakcie. Sprawdzam też dostęp użytkownika i bezpieczne zapisywanie wartości do formatu arkuszowego.
Dlaczego to ważne: Rozwija streaming na przykładzie funkcji występującej w CV.
Możliwe dopytania: Co zrobić, gdy użytkownik rozłączy się w połowie pobierania?
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.
Zacznij od
- B-P01 · Czym jest Node.js i czym różni się od JavaScriptu w przeglądarce? — JavaScript, TypeScript i Node.js
- B-P04 · Co to jest Promise? — JavaScript, TypeScript i Node.js
- B-P10 · Co daje TypeScript i czego nie daje? — JavaScript, TypeScript i Node.js
Powiązane pytania
Dalsza lektura
- Node.js: Backpressuring in Streams(otwiera się w nowej karcie)Docs; dostęp 22.10.2026. Przepływ, drain i ograniczanie pamięci.