#javascript #loops #csv
#javascript #циклы #csv
Вопрос:
Я запускаю вызов API из списка данных в файле csv. Затем я возвращаю результаты и записываю их обратно в новый CSV-файл. Проблема, с которой я сталкиваюсь, заключается в том, что он записывает результаты обратно в одну строку. Существуют ли пакеты npm или способ для него записать результаты обратно в отдельные строки после завершения цикла? Ниже приведен код, который я запускаю.
/*AXIOS GET API CALL URL */
axios.get(url 'term=' orgName 'amp;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) amp;amp; 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. вы возражаете против создания строки CSV и записи ее в ваш новый файл? (вместо отправки массива)
2. как бы это выглядело?
3. но точно не добавлено.
4. Пожалуйста, посмотрите мой ответ
Ответ №1:
Если вы захотите создать строку самостоятельно, вам не нужен подключаемый модуль. Следующий код записывает первую строку 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, Phonen";
//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).