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

202
Vistas
Express 'response.download' que devuelve datos no estándar para la misma solicitud

Estoy generando un archivo de descarga y cada vez que envío una solicitud, me devuelve algo diferente, cada vez que el archivo se genera como se esperaba:

 usuário,primeiro_nome,ultimo_nome,ativo,completou_o_treinamento 4,Foo,Bas,SIM,SIM 5,Ble,Loco,NÃO,NÃO 9,gui2,md,NÃO,NÃO 3137,foo,baz,NÃO,NÃO

Pero Express Returns no es lo mismo, debería devolver el archivo en response.download . Descarga pero a veces, cuando realicé la llamada, devuelve File not found otras veces devuelve solo los campos usuário,primeiro_nome,ultimo_nome,ativo,completou_o_treinamento , no body response y, a veces devuelve el archivo como debería ser, no sé qué está mal porque el archivo siempre se genera de la manera correcta

Generar código de archivo

 export const createReportFile = ({ reportLines, fromDate, toDate }: CreateReportProps): string => { const startDate = format(fromDate, 'dd-MM-yyyy') const endDate = format(toDate, 'dd-MM-yyyy') const aksReportDate = Date.now() const reportFileId = `${startDate}-to-${endDate}Report${aksReportDate}` const reportFileStream = fs.createWriteStream( path.join(__dirname, '..', '..', '..', 'tmp', 'uploads', `${reportFileId}.csv`), ) const fieldsLine = 'usuário,primeiro_nome,ultimo_nome,ativo,completou_o_treinamento' reportFileStream.once('open', () => { reportFileStream.write(fieldsLine + '\r\n') reportLines.forEach(({ user_id, first_name, last_name, active, completed }) => { reportFileStream.write(`${user_id},${first_name},${last_name},${active},${completed}\r\n`) }) }) return reportFileId }

Descargar código de archivo

 . . . const usersReport = ....generate users report const reportFileId = createReportFile({ fromDate, toDate, reportLines: usersReport }) const filePath = path.join(__dirname, '..', '..', '..', 'tmp', 'uploads', `${reportFileId}.csv`) console.log(filePath) return response.download(filePath) }

Informe de usuarios

 [ { user_id: 4, first_name: 'foo', last_name: 'baz', active: 'SIM', completed: 'SIM' }, { user_id: 5, first_name: 'Ble', last_name: 'L', active: 'NÃO', completed: 'NÃO' }, { user_id: 9, first_name: 'foooo', last_name: 'ma', active: 'NÃO', completed: 'NÃO' }, { user_id: 3, first_name: 'foo', last_name: 'bar', active: 'NÃO', completed: 'NÃO' } ]
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Encontré la solución

Cambié el generate file code al siguiente código

 export const createReportFile = ({ reportLines, fromDate, toDate }: CreateReportProps): string => { const startDate = format(fromDate, 'dd-MM-yyyy') const endDate = format(toDate, 'dd-MM-yyyy') const aksReportDate = Date.now() const reportFileId = `${startDate}-to-${endDate}Report${aksReportDate}` let data = 'usuário,primeiro_nome,ultimo_nome,ativo,completou_o_treinamento\r\n' reportLines.forEach(({ user_id, first_name, last_name, active, completed }) => { data += `${user_id},${first_name},${last_name},${active},${completed}\r\n` }) fs.writeFileSync( path.join(__dirname, '..', '..', '..', 'tmp', 'uploads', `${reportFileId}.csv`), data, ) return reportFileId }

No soy un experto para saber por qué funciona cuando cambio, pero creo que es porque en la solución anterior estaba trabajando con flujos, y ahora escribimos archivos de forma sincrónica.

Si me equivoco por favor corrígeme, me gustaría saber más sobre esto

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