Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

234
Vistas
NodeJS FileSystem Json Leer y escribir solo uno funciona

para un proyecto escolar, tengo que reescribir un objeto Json usando el nodo fs. Escribí un módulo y si uso deleteCity o addCity solos, funcionan perfectamente bien. Pero cuando llamo a ambos después de otro , solo uno funciona . En mi archivo JSON hay una matriz con 10 objetos. En mi archivo javascript principal, necesito mi módulo y llamo a las funciones addCity y deleteCity.

 //Modules const fs = require("fs"); //Variablen const citiesPath = "./cities.json"; //Funktionen const deleteCity = (name) => { fs.readFile(citiesPath, "utf-8", (err, jstring) => { if (err) { console.log(err); } try { let data = JSON.parse(jstring); for (let i = 0; i < data.length; i++) { if (data[i].Name == name) { data.splice(i, 1); } } fs.writeFile(citiesPath, JSON.stringify(data, null, 2), (err) => { if (err) { console.log(err); } }); } catch (error) { console.log(error); } }); }; const addCity = (obj) => { fs.readFile(citiesPath, "utf-8", (err, jstring) => { if (err) { console.log(err); } try { let data = JSON.parse(jstring); data.push(obj); fs.writeFile(citiesPath, JSON.stringify(data, null, 2), (err) => { if (err) { console.log(err); } }); } catch (error) { console.log(error); } }); }; const showCity = () => { fs.readFile(citiesPath, "utf-8", (err, jstring) => { if (err) { console.log(err); } try { let data = JSON.parse(jstring); console.log(data); } catch (error) { console.log(error); } }); }; //Exporte module.exports = { deleteCity, addCity, showCity };

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Supongo que está llamando a ambas funciones de forma síncrona, es decir

 deleteCity("London"); addCity({ "Name": "Paris" });

El problema aquí es que las llamadas son asincrónicas y la segunda comenzará antes de que finalice la primera llamada, por lo que básicamente antes de que se elimine una ciudad.

Si se trata de un proyecto escolar, la solución más sencilla para corregir el código es usar la versión síncrona de las llamadas fsfs.readFileSync yfs.writeFileSync :

 //Modules const fs = require("fs"); //Variablen const citiesPath = "./cities.json"; //Funktionen const deleteCity = (name) => { const jstring = fs.readFileSync(citiesPath, "utf-8"); let data = JSON.parse(jstring); for (let i = 0; i < data.length; i++) { if (data[i].Name == name) { data.splice(i, 1); } } fs.writeFileSync(citiesPath, JSON.stringify(data, null, 2)); }; const addCity = (obj) => { const jstring = fs.readFileSync(citiesPath, "utf-8"); let data = JSON.parse(jstring); data.push(obj); fs.writeFileSync(citiesPath, JSON.stringify(data, null, 2)); }; const showCity = () => { const jstring = fs.readFileSync(citiesPath, "utf-8"); let data = JSON.parse(jstring); console.log(data); }; //Exporte module.exports = { deleteCity, addCity, showCity };

Tenga en cuenta que no necesita detectar los errores solo para registrarlos dentro de sus funciones sincrónicas. Si se lanza un error y no se detecta, Node.js lo registrará por usted.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda