0

I'm basically trying to:

  1. Query stream to MongoDB using mongoose
  2. Transform stream result using fast-csv
  3. Return stream response

How can I do that properly?

Here's my handler code

async function handler(req, h) {
  const fastCsv = require('fast-csv')
  const Mongoose = require('mongoose')
  const LOS = Mongoose.model('LoanOriginationSystem')
  const stream = LOS.find({}).stream()

  const transformer = (doc) => {
    return {
      'APPLICATION ID': doc._id,
      'PHONE NUMBER': doc.phone_number,
      'NAME': doc.name,
      'TIME CREATED': doc.time_created,
      'APPROVED CREDIT AMOUNT': doc.detail.approved_credit_limit,
      'STATUS': doc.application_status,
      'LAST UPDATE': doc.last_update_time
    }
  }

  const csvStream = fastCsv.createWriteStream({ headers: true }).transform(transformer)
  const readStream = stream.pipe(csvStream)


  return h.response(readStream)
    .header('Content-type', 'application/octet-stream')
    .header('content-Disposition', 'attachment;filename="response-result.csv"')
}

It's return error Cannot reply with stream in object mode

FyzD
  • 1

0 Answers0