Saving ArrayList to CSV

Hello,
Trying to save an ArrayList of

Admin Account o4AwA6wGJrQ7WLP6m 4.5
Sergo Saan bjHmCyiDonR7LbnFb 0
Anton Lodat TTFEkaDsnWxnsLA2v 0

to a CSV file.

So far my code looks like

'click .exportMo1': function(event, template){
event.preventDefault();

var data = [];
let query = Meteor.users.find().fetch().map(function(u){
var userFirst = u.profile.name_first;
var userLast = u.profile.name_last;
var currentId = u._id;

try {
var sum = Salaries.findOne({"userId": {$eq: currentId}, "month": {$eq: 1}, "year": {$eq: parseFloat(earningFilterYear.get())} } , {sort:{createdAt: -1}}).amount; 
}catch(e){
}

if(!sum)
sum = 0;

console.log(userFirst, userLast, currentId, sum );
//data.push(userFirst+","+userLast+","+sum);
data.push(userFirst+","+userLast+","+sum);
});
var json = Object.assign({}, data);


console.log(json);

    var link = document.createElement('a');
    var mimeType = 'text/plain';
    link.setAttribute('download', "Export_Jan_"+earningFilterYear.get()+".csv");
    link.setAttribute('href', 'data:' + mimeType  +  ';charset=utf-8,' + data);
    link.click(); 

    //  saveAs(json, "Export_Jan_"+earningFilterYear.get()+".csv");

  Bert.alert('CSV exported successfully', 'success' );

},

Only issue that my code saves it all on a SINGLE line, I need First Name, Last Name, Amount, new Row, Data for person 1, New Row, etc

Maybe you need to add the \r\n or \n new line character since you are building the csv manually and not using Papa Parse/Unparse lib.

such as

jsonText = '{\r\n\t"text": "' + origText + '"\r\n}', or variant

// Utility Functions for Making the CSV Client Side and initiating the Download.
function makeCSV(data, config) {
  if (!config) {
    config = {
      quotes: false,
      delimiter: ",",
      newline: "\r\n"
    }
  }
  return Papa.unparse(data, config)
}

function downloadCSV(csv, exportFilename) {
  const csvData = new Blob([csv], {
    type: 'text/csv;charset=utf-8;'
  })
  if (navigator.msSaveBlob) {
    navigator.msSaveBlob(csvData, exportFilename)
  } else {
    const link = document.createElement('a')
    link.href = window.URL.createObjectURL(csvData)
    link.setAttribute('download', exportFilename)
    document.body.appendChild(link)
    link.click()
    document.body.removeChild(link)
  }
}

Meteor.call('getCsvData', formValues, function(err, res) {
      if (err) {
        console.log('err:', err)
      }
      if (res) {
        const config = lo_.get(template, 'csvConfig', false)
        const csv = makeCSV(res, config)
        downloadCSV(csv, formValues.filenameFormatted)
        $('#collectionForm').trigger("reset")
      }
    })

What do I parse onto the csv var in the downloadCSV(csv, exportFilename)
Is it the ArrayList or the JSON object? How do I push data onto array string along with the new lines?

var data = [];
let query = Meteor.users.find().fetch().map(function(u){
var userFirst = u.profile.name_first;
var userLast = u.profile.name_last;
var currentId = u._id;
//SOME LOOP
data.push('{\r\n\t"text": "' userFirst+","+userLast+","+sum '"\r\n}');

OR

var json = Object.assign({}, data);

I ended up going with a HTML file instead of CSV

event.preventDefault();

var data = [];
var montnNo = 11;
data.push('<HTML>');
data.push('<HEAD>');
data.push('<Title> Monthly export '+earningFilterYear.get()+' </Title>');
data.push('</HEAD>');
data.push('<BODY BGCOLOR="FFFFFF">');
data.push('<table border="1" cellpadding="5" cellspacing="5" ');
data.push('<tr> <th>Person</th> <th>Salary</th> </tr>')

let query = Meteor.users.find().fetch().map(function(u){
var userFirst = u.profile.name_first;
var userLast = u.profile.name_last;
var currentId = u._id;

try {
var sum = Salaries.findOne({"userId": {$eq: currentId}, "month": {$eq: montnNo}, "year": {$eq: parseFloat(earningFilterYear.get())} } , {sort:{createdAt: -1}}).amount; 
}catch(e){
}

if(!sum)
sum = 0;
data.push('<tr>')
data.push('<td> '+userFirst+' '+userLast+' </td>');
data.push('<td> '+sum+' </td>');
data.push('</tr>')
});
data.push('</BODY>');
data.push('</HEAD>');
var link = document.createElement('a');
link.setAttribute('download', "Export_"+montnNo+"_"+earningFilterYear.get()+".html");
link.setAttribute('href', 'data:text/html;charset=utf-8;' + data);
link.click(); 
Bert.alert('Data exported successfully', 'success' );