How to write custom headers using fast-csv and mysql stream

22 Views Asked by At

This code is working fine

static #getCSV(conn, type, delimiter=';'){
    return new Promise((resolve, reject) => {
                    
        const tempFileName = `data-${crypto.randomBytes(8).toString('hex')}.csv`;
        const tempDir = path.join(os.tmpdir(), 'apisgh', 'data');
        const tempFilePath = path.join(tempDir, tempFileName);

        if (!fs.existsSync(tempDir)) {
          fs.mkdirSync(tempDir, { recursive: true });
        }
                  
        const writeStream = fs.createWriteStream(tempFilePath);
        
        const customHeaders = [ // my headers ]
        
        // only headers is written if I set headers to my customHeaders 
        const csvStream = format({
            headers: customHeaders, 
            delimiter: delimiter 
        });

        // SQL
        let sql = this.sqlQuery(type) + ' LIMIT 200 ';
  
        // Do query and write csv file
        conn.query(sql)
            .stream()
            .pipe(csvStream)
            .pipe(writeStream);
        
        csvStream.on('error', (err) => {
            reject(err);
        });
    
        writeStream.on('error', (err) => {
            reject(err);
        });
    
        writeStream.on('finish', () => {
            resolve({ fileName: tempFileName, filePath: tempFilePath });
        });
    });
}

If I Set { headers: true, delimiter:delimiter} everything working well, but when I trying to use my own headers only the headers is write in the file

0

There are 0 best solutions below