Запись в файл
Часть раздела Основы 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. Передача самого массива вызовет ошибку, потому что файл хранит текст.
Задание
ЛегкоНа этом шаге открывается подготовленный для курса проект инструмента командной строки для заметок, а не файлы вашего проекта из урока «Чтение файла» (включая store.js). Ваша предыдущая работа остаётся в своём уроке. Прочитайте предоставленные файлы, прежде чем редактировать store.js. В этой копии находится инструмент для заметок, который читает файлы.
add по-прежнему забывает заметку после завершения программы. Сделайте так, чтобы он сохранял каждую заметку в notes.json, и при следующем запуске list показывал её.
- В
store.js, после того какaddдобавляет новую заметку в массив, записывайте весь массив обратно вnotes.jsonв формате JSON. Записывайте каждую заметку, а не только новую: при записи в файл всё его содержимое заменяется. Используйте отступ в два пробела для JSON, чтобы его было удобно читать в Files. - В
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" ] - Если файла
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