Menu
CoddyTech

Escribir un archivo

Parte de la sección Conceptos básicos de Node.js del Journey de Node.js de Coddy. Lección 14 de 33.

add olvida la nota en cuanto termina el programa.

writeFileSync(path, text) escribe un archivo y reemplaza todo lo que contenía. JSON.stringify convierte un arreglo en texto JSON, y null, 2 lo indenta con dos espacios para que se lea bien en Files.

import { writeFileSync } from 'node:fs';

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

El archivo siempre contiene el arreglo completo: carga las notas, añade una y las vuelve a escribir todas. En store.js, add es un método del objeto store. Dentro de un método, this es el objeto en sí, así que this.notes es el arreglo de store. Pasar el arreglo en sí provoca un error, porque un archivo contiene texto.

challenge icon

Desafío

Fácil

Este paso abre el proyecto preparado de la herramienta de línea de comandos de notas del curso, en lugar de los archivos de tu proyecto de Lectura de un archivo (incluido store.js). Tu trabajo anterior permanece en su propia lección. Lee los archivos proporcionados antes de editar store.js. Esta copia contiene la herramienta de notas que lee archivos.

add sigue olvidando la nota cuando termina el programa. Haz que guarde todas las notas en notes.json, para que list las muestre en la siguiente ejecución.

  1. En store.js, después de que add agregue la nota nueva al arreglo, escribe el arreglo completo de vuelta en notes.json como JSON. Escribe todas las notas, no solo la nueva: al escribir un archivo se reemplaza todo lo que había en él. Indenta el JSON con dos espacios para que sea fácil de leer en Archivos.
  2. En notes.js, en la rama add, reemplaza la línea que imprime Adding: .... Ahora imprime solo Saved note , el número de la nueva nota y un punto. Con las dos notas con las que empieza notes.json, node notes.js add Buy bread imprime:
    Saved note 3.
    y entonces notes.json contiene:
    [
      "Buy milk",
      "Call Ada",
      "Buy bread"
    ]
  3. Cuando no hay ningún notes.json, add lo crea. Después de clear, node notes.js add Call Ada imprime Saved note 1., y entonces list muestra 1. Call Ada.

Pruébalo: escribe add Buy bread en el cuadro después de $ node notes.js y presiona Enter. Verás Saved note 3.. Escribe list: Buy bread ahora es la nota 3, aunque esta sea una nueva ejecución. Abre notes.json en Archivos para ver el arreglo guardado. Luego escribe clear, que elimina el archivo, y add Call Ada: verás Saved note 1..

Pruébalo tú mismo

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 las lecciones de Conceptos básicos de Node.js

Practica por tu cuenta: Playground de Express