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

123
Vistas
método forEach salta objetos durante la iteración

Estoy escribiendo una función que toma una matriz de objetos que contienen información y escribe esa información en el archivo JSON. Por ejemplo:

 let arr = [ { creator: 'Girchi', title: '🗣 Hello World', link: 'https://www.facebook.com/GirchiParty/posts/4693474864037269', pubDate: 'Sat, 07 Aug 2021 12:07:42 GMT', guid: '9386a170c1f52c7f388a7e1e236957e5', isoDate: '2021-08-07T12:07:42.000Z' }, { creator: 'Someone else', title: '🗣 Hi World', link: 'https://www.facebook.com/GirchiParty/posts/4693474864037269', pubDate: 'Sat, 07 Aug 2021 12:07:42 GMT', guid: '9386a170c1f52c7f388a7e1e236957e5', isoDate: '2021-08-07T12:07:42.000Z' } ]

y así sucesivamente... hay 16 de ellos.

Función que debe manejar ese proceso:

 function writeTheData(obj) { fs.readFile('./assets/data/fb.json', (err, data) => { if (err) throw err; let newsData = JSON.parse(data); newsData[obj.link] = { ...newsData[obj.link], link: obj.link, title: obj.title, text: obj.contentSnippet, articleDate: obj.pubDate, content: obj.content }; newsData = JSON.stringify(newsData) fs.writeFileSync("./assets/data/fb.json", newsData, (error) => { if (error) console.log(error) console.log('success'); }) }) } array.forEach(obj => writeTheData(obj));

Escribe los datos en el archivo JSON, pero solo se escribe el último objeto. Por ejemplo, si hay 10 objetos en la matriz, solo se escribirá el décimo objeto. No entiendo cuál es el problema aquí. ¿Cómo puedo arreglar esto?

Pensé que tal vez sobrescribía los datos y por eso solo veo el último objeto, pero en esta parte newsData[obj.link] les doy a todos ID únicos.

Estoy usando un montón de módulos, solicitudes, etc. y es por eso que no puedo mostrar todo mi código. Además, hay algunas propiedades más que tienen los objetos, pero no están en inglés, así que no las incluí.

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

0

La función fs.writeFileSync vuelve a escribir el archivo completo, por lo que hace que, al hacer forEach, tenga solo la última entrada de la lista.

Es posible que desee utilizar fs.appendFile para agregar contenido al archivo o, como una variante, para acumular el resultado y escribirlo una vez.

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