Jak zapisać dane do pliku JSON w Node.js? Pokażę jak to zrobić za pomocą modułu File System, który dostępny jest w Node.js.
File System – moduł do interakcji z plikami w Node.js
Moduł File System umożliwia wykonywanie operacji na plikach (zapis, odczyt).
Do skorzystania z tego modułu wymagana jest linijka kodu:
const fs = require('fs');
Zapisywanie do pliku – .writeFileSync()
Do zapisywania danych do pliku zostanie wykorzystana metoda .writeFileSync().
const storeData = (data, path) => {
try {
fs.writeFileSync(path, JSON.stringify(data))
} catch (err) {
console.error(err)
}
}
Powyższa funkcja została stworzona w sposób generyczny co pozwala na wielokrotne wykorzystanie w kodzie. Jako parametry przyjmuje obiekt data oraz path, który jest ścieżką zapisu (string).
W funkcji storeData w metodzie fs.writeFileSync() został przekazany parametr path oraz jako drugi parametr JSON.stringify(data).
JSON.stringify() konwertuje przekazany obiekt lub wartość do JSONa.
Aby powyższa funkcja storeData mogła zostać wykorzystana w innych miejscach należy ją wyeksportować:
module.exports = storeData;
Następnie w miejscu wykorzystania zaimportować (należy podać odpowiednią ścieżkę do pliku):
const storeData = require('./modules/storeData');
Parametr data może wyglądać następująco:
const data = [
{
id: 1,
name: 'ipsum',
country: 'us',
color: 'blue',
},
{
id: 2,
name: 'ipsum',
country: 'us',
color: 'red',
},
{
id: 3,
name: 'dolor',
country: 'gb',
color: 'green',
},
{
id: 4,
name: 'amet',
country: 'pl',
color: 'white',
},
];
Parametr path natomiast:
const dataPath = './data/example.json';
Zapisywanie do pliku – cały kod
Poniżej kod całej funkcji do zapisywania pliku:
Różnice pomiędzy .writeFileSync() i .writeFile()
.writeFileSync() posiada takie same opcje jak .writeFile(), ale nie posiada dodatkowego parametru callback, który zostanie wywołany po zakończeniu działania.
Jak sama nazwa wskazuje, metoda .writeFileSync() wykonuje się synchronicznie co oznacza, że główny wątek programu zostaje zablokowany dopóki .writeFileSync() nie zakończy swojego działania.
Przydatne linki
Dokumentacja File System (fs) – https://nodejs.org/api/fs.html#fs_file_system
fs.writeFile() – https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback
fs.writeFileSync() – https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options
JSON.stringify() – https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
Różnice pomiędzy .writeFileSync() i .writeFile() na medium – https://medium.com/@abdishire15/what-is-the-difference-between-fs-writefile-and-fs-writefilesync-3a2c3f2c516
Podziel się opinią na temat artykułu w komentarzu lub na facebooku.
Dodaj komentarz