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.
Desafio
FácilEsta 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.
- Em
store.js, depois queaddcolocar a nova anotação no array, grave o array inteiro de volta emnotes.jsoncomo 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. - Em
notes.js, no ramoadd, substitua a linha que exibeAdding: .... Agora ela exibe somenteSaved note, o número da nova anotação e um ponto final. Com as duas anotações quenotes.jsonjá contém,node notes.js add Buy breadexibe:eSaved note 3.notes.jsonpassa a conter:[ "Buy milk", "Call Ada", "Buy bread" ] - Quando não houver
notes.json,addo cria. Depois declear,node notes.js add Call AdaexibeSaved note 1., elistmostra1. 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
1Executando JavaScript no Node
Olá, NodeLendo o comandoArgumentos da linha de comandoComandos3Arquivos
Texto e valores JSONLendo um arquivoEscrevendo texto JSONEscrevendo em um arquivoRemovendo uma notaPratique por conta própria: Playground de Express