как добавлять данные в существующий json файл в node js

Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
22 декабря 2024

Для работы с файлами можно использовать встроенный модуль fs (файловая система) в Node.js. Но, если вам нужно работать с асинхронными операциями, вы можете использовать модуль fs.promises.

Для начала, давайте создадим пример JSON файла, называемого data.json, с следующим содержимым:

[
    {
        "id": 1,
        "name": "Alice"
    },
    {
        "id": 2,
        "name": "Bob"
    }
]

Теперь, чтобы прочитать этот файл, вы можете использовать следующий код:

const fs = require('fs').promises;

async function readJsonFile(filePath) {
    const data = await fs.readFile(filePath, 'utf-8');
    return JSON.parse(data);
}

После того, как мы прочитали файл и преобразовали его в JavaScript объект, мы можем добавить новые данные в массив. Например, давайте добавим нового пользователя.

async function addDataToJsonFile(filePath, newData) {
    try {
        // Чтение существующих данных
        const existingData = await readJsonFile(filePath);

        // Добавление новых данных
        existingData.push(newData);

        // Запись обновленных данных обратно в файл
        await fs.writeFile(filePath, JSON.stringify(existingData, null, 2), 'utf-8');
        console.log('Данные успешно добавлены!');
    } catch (error) {
        console.error('Ошибка при работе с файлом:', error);
    }
}

В данном случае newData - это объект, который вы хотите добавить. Например:

const newUser = {
    "id": 3,
    "name": "Charlie"
};

Теперь вы можете вызвать функцию addDataToJsonFile, передавая путь к вашему JSON файлу и добавляемые данные.

const filePath = './data.json';
const newUser = {
    "id": 3,
    "name": "Charlie"
};

addDataToJsonFile(filePath, newUser);

Вот полный код:

const fs = require('fs').promises;

async function readJsonFile(filePath) {
    const data = await fs.readFile(filePath, 'utf-8');
    return JSON.parse(data);
}

async function addDataToJsonFile(filePath, newData) {
    try {
        const existingData = await readJsonFile(filePath);
        existingData.push(newData);
        await fs.writeFile(filePath, JSON.stringify(existingData, null, 2), 'utf-8');
        console.log('Данные успешно добавлены!');
    } catch (error) {
        console.error('Ошибка при работе с файлом:', error);
    }
}

const filePath = './data.json';
const newUser = {
    "id": 3,
    "name": "Charlie"
};

addDataToJsonFile(filePath, newUser);
0 0
Познакомьтесь с основами JavaScript бесплатно