Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

168
Views
¿Cómo transmitir la respuesta de consulta de mongo como csv?

Tengo una colección que contiene más de 5 millones de registros. Necesito consultar y pasar los datos al cliente como un archivo csv. Inicialmente, cuando los registros solían ser bajos, simplemente lo hicimos en bucle y lo escribimos en un archivo y lo enviamos al cliente. Pero ahora que el registro sigue creciendo, consume memoria y nos enfrentamos a un problema. Entonces, para usar la transmisión, probé a continuación,

 const cursor = Model.find(query) const transformer = (doc) => { return { "Creator": doc.Entity_Creator, "Action Date" : doc.E_Approve_Time, "Remarks": doc.Entity_Comment } } let pat = path.join(__dirname, '../') var csvFilePath = '././downloads/' + ' Approved.csv' const filename = pat + csvFilePath res.setHeader('Content-disposition',`attachment;filename=${filename}`); res.writeHead(200,{ 'Content-Type': 'text/csv'}) res.flushHeaders(); var csvStream = fastCsv.format({headers: true}).transform(transformer) cursor.stream().pipe(csvStream).pipe(res)

Pero después de la descarga, obtengo archivos con Object Object en una sola columna. Cómo resolver este problema?

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

utilizar este

 const transformer = (doc) => { return { Creator: doc.Entity_Creator, "Action Date": doc.E_Approve_Time, Remarks: doc.Entity_Comment, }; }; let pat = path.join(__dirname, "../"); var csvFilePath = "././downloads/" + " Approved.csv"; const filename = pat + csvFilePath; res.setHeader("Content-disposition", `attachment;filename=${filename}`); res.writeHead(200, { "Content-Type": "text/csv" }); res.flushHeaders(); var csvStream = fastCsv.format({ headers: true }).transform(transformer); csvStream.pipe(process.stdout).on("end", () => process.exit()); Model.find(query).exec(function (err, cursor) { if (err) { console.log(err); console.log('error returned'); return false; } if (!data) { console.log('Authentication Failed'); return false; } cursor.forEach((e) => { csvStream.write({ Creator: e.Entity_Creator, "Action Date": e.E_Approve_Time, Remarks: e.Entity_Comment, }); }); }) csvStream.end();
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!