Попытка иметь отдельные строки на записи CSV - PullRequest
0 голосов
/ 11 марта 2019

Я запускаю вызов API из списка данных в CSV-файле. Затем я возвращаю результаты и записываю их обратно в новый CSV-файл. Проблема, которую я имею в том, что он записывает результаты обратно в одну строку. Есть ли пакеты npm или способ записать результаты обратно в отдельные строки после завершения цикла? Ниже приведен код, который я запускаю.

    /*AXIOS GET API CALL URL */
    axios.get(url+'term='+orgName +'&location='+city + state + zipCode,{
        headers: {
            Authorization: 'Bearer ' + token
        }
    })
    /*If results are less than 1, moves on to fetchWhitePages API, ELSE, passes in the data*/
        .then(res => {
            if(Array.isArray(res.data.businesses) && res.data.businesses.length === 0){
               return fetchWhitePages(data);

            }else{
                console.log('RUNNING YELPAPI');
                /*For loop to get JSON objects within YelpAPI */

                for(let i =0; i < res.data.businesses.length; i++ ){

                    churchListing.push('Name: ' + res.data.businesses[i].name);
                    churchListing.push('Address: ' + res.data.businesses[i].location.address1);
                    churchListing.push('City: ' + res.data.businesses[i].location.city);
                    churchListing.push('Zip: ' + res.data.businesses[i].location.zip_code);
                    churchListing.push('Phone: ' + res.data.businesses[i].phone + "/n");
                    // console.log(churchListing);

                   fs.writeFile('my.csv', churchListing,  (err) => {
                       if(err) throw err;
                   });

                }

            }
        })
        .catch(err => {
            console.log(err)
        })
}

1 Ответ

0 голосов
/ 11 марта 2019

Если вы захотите собрать строку самостоятельно, вам не нужен плагин. Следующий код записывает первую строку CSV в качестве заголовка, а затем добавляет каждую строку в качестве данных CSV:

const businesses = [
{name:'one', address: 'one address', city: 'one city', zip: '111111', phone: '1111111111'},
{name:'two', address: 'two address', city: 'two city', zip: '222222', phone: '2222222222'},
{name:'three', address: 'three address', city: 'three city', zip: '333333', phone: '33333333'},
]

//Header
let churchListingCSV = "Name, Address, City, Zip, Phone\n";
//Data rows
businesses.forEach(row => {
  churchListingCSV += row.name+',';
  churchListingCSV += row.address+',';
  churchListingCSV += row.city+',';
  churchListingCSV += row.zip+',';
  churchListingCSV += row.phone;
  churchListingCSV += "\n";
});

console.log(churchListingCSV);
/*
fs.writeFile('my.csv', churchListingCSV, (err) => {
  if (err) throw err;
});
*/

В этом решении предполагается, что «разделитель строк» ​​- это символ новой строки, а «разделитель полей» - запятая (традиционный формат CSV).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...