Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

207
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda