Menu
CoddyTech

Запись в файл

Часть раздела Основы Node.js путешествия по Node.js на Coddy. Урок 14 из 33.

add забывает заметку, как только программа завершается.

writeFileSync(path, text) записывает файл, заменяя всё его содержимое. JSON.stringify преобразует массив в текст JSON, а null, 2 задаёт отступ в два пробела, чтобы содержимое было удобно читать в Files.

import { writeFileSync } from 'node:fs';

const scores = [12, 40];
scores.push(31);
writeFileSync('scores.json', JSON.stringify(scores, null, 2));

В файл всегда записывается весь массив: загрузи заметки, добавь одну и запиши их все обратно. В store.js add — это метод объекта store. Внутри метода this — сам объект, поэтому this.notes — это массив объекта store. Передача самого массива вызовет ошибку, потому что файл хранит текст.

challenge icon

Задание

Легко

На этом шаге открывается подготовленный для курса проект инструмента командной строки для заметок, а не файлы вашего проекта из урока «Чтение файла» (включая store.js). Ваша предыдущая работа остаётся в своём уроке. Прочитайте предоставленные файлы, прежде чем редактировать store.js. В этой копии находится инструмент для заметок, который читает файлы.

add по-прежнему забывает заметку после завершения программы. Сделайте так, чтобы он сохранял каждую заметку в notes.json, и при следующем запуске list показывал её.

  1. В store.js, после того как add добавляет новую заметку в массив, записывайте весь массив обратно в notes.json в формате JSON. Записывайте каждую заметку, а не только новую: при записи в файл всё его содержимое заменяется. Используйте отступ в два пробела для JSON, чтобы его было удобно читать в Files.
  2. В notes.js, в ветке add, замените строку, которая выводит Adding: .... Теперь она выводит только Saved note , номер новой заметки и точку. Если notes.json начинается с двух заметок, команда node notes.js add Buy bread выводит:
    Saved note 3.
    а затем в notes.json хранится:
    [
      "Buy milk",
      "Call Ada",
      "Buy bread"
    ]
  3. Если файла notes.json нет, команда add создаёт его. После выполнения clear команда node notes.js add Call Ada выводит Saved note 1., а команда list затем показывает 1. Call Ada.

Попробуйте: введите add Buy bread в поле после $ node notes.js и нажмите Enter. Вы увидите Saved note 3.. Введите list: теперь Buy bread — заметка 3, хотя это новый запуск. Откройте notes.json в Files, чтобы увидеть сохранённый массив. Затем введите clear, чтобы удалить файл, а после этого — add Call Ada: вы увидите Saved note 1..

Попробуйте сами

import { existsSync, readFileSync } from 'node:fs';

const file = 'notes.json';

const store = {
    notes: existsSync(file) ? JSON.parse(readFileSync(file, 'utf8')) : [],
    add(text) {
        this.notes.push(text);
        return this.notes.length;
    },
};

export default store;

Все уроки раздела Основы Node.js

Потренируйтесь самостоятельно: Песочница Express