Menu
CoddyTech

Escrevendo em um arquivo

Parte da seção Fundamentos de Node.js do Journey de Node.js da Coddy. Lição 14 de 33.

add esquece a nota assim que o programa termina.

writeFileSync(path, text) grava um arquivo, substituindo tudo o que ele continha. JSON.stringify transforma um array em texto JSON, e null, 2 o recua em dois espaços para que fique fácil de ler em Files.

import { writeFileSync } from 'node:fs';

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

O arquivo sempre recebe o array inteiro: carregue as notas, adicione uma e grave todas de volta. Em store.js, add é um método do objeto store. Dentro de um método, this é o próprio objeto, então this.notes é o array do store. Passar o próprio array causa um erro, porque um arquivo contém texto.

challenge icon

Desafio

Fácil

Esta etapa abre o projeto da ferramenta de linha de comando de anotações preparada para o curso, em vez dos arquivos do seu projeto de Lendo um arquivo (incluindo store.js). Seu trabalho anterior continua na própria lição. Leia os arquivos fornecidos antes de editar store.js. Esta cópia contém a ferramenta de anotações que lê arquivos.

add ainda esquece a anotação quando o programa termina. Faça com que ela salve todas as anotações em notes.json, para que list as mostre na próxima execução.

  1. Em store.js, depois que add colocar a nova anotação no array, grave o array inteiro de volta em notes.json como JSON. Grave todas as anotações, não apenas a nova: gravar em um arquivo substitui tudo o que havia nele. Indente o JSON com dois espaços para facilitar a leitura em Files.
  2. Em notes.js, no ramo add, substitua a linha que exibe Adding: .... Agora ela exibe somente Saved note , o número da nova anotação e um ponto final. Com as duas anotações que notes.json já contém, node notes.js add Buy bread exibe:
    Saved note 3.
    e notes.json passa a conter:
    [
      "Buy milk",
      "Call Ada",
      "Buy bread"
    ]
  3. Quando não houver notes.json, add o cria. Depois de clear, node notes.js add Call Ada exibe Saved note 1., e list mostra 1. Call Ada.

Experimente: digite add Buy bread na caixa após $ node notes.js e pressione Enter. Você verá Saved note 3.. Digite list: Buy bread agora é a anotação 3, mesmo sendo uma nova execução. Abra notes.json em Files para ver o array salvo. Em seguida, digite clear, que exclui o arquivo, e depois add Call Ada: você verá Saved note 1..

Experimente você mesmo

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;

Todas as lições de Fundamentos de Node.js

Pratique por conta própria: Playground de Express