Zapisywanie JSONa do pliku w Node.js

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 mediumhttps://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.

Jak zapisać JSONa do pliku w Node.js?#devpebe #javascript #nodejshttps://devpebe.com/2019/09/30/zapisywanie-jsona-do-pliku-w-node-js/

Opublikowany przez Devpebe Poniedziałek, 30 września 2019

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *