В настоящее время у меня есть приложение, которое отображает страницу EJS и отображает результаты запроса мангуста. Данные отправляются на страницу шаблона как queryResults. После того, как он отобразил эти результаты, я пытаюсь добавить кнопку внизу, которая позволяет экспортировать queryResults в CSV-файл. Хотя есть много пакетов npm, которые преобразуют данные, я не уверен, как подойти к этому. Данные отображаются на отображаемой странице с помощью следующего кода:
<div class="resultsBox">
<% queryResults.forEach(function(results){ %>
<div class="col-sm-1">
<a id="jobRefLink" href="/search/<%= results._id %>">
<%=results.jobTicket %></a></div>
...
...
...
</div>
<% }); %>
<a href="#">Export</a>
Я попытался установить различные страницы, но все они работают на стороне сервера, и, хотя это не проблема, я не уверен, как чтобы реализовать их на стороне клиента и вернуть данные на соответствующий маршрут.
вы должны использовать https://www.npmjs.com/package/json2csv пакет для генерации CSV.
Пример кода
const Json2csvParser = require('json2csv').Parser;
//const fields = ['car', 'price', 'color'];
const fields = [{
"label": 'Car Name',
"value": 'car'
},{
"label": 'Price USD',
"value": 'price'
},{
"label": 'color Color',
"value": 'color'
}
];
const myCars = [
{
"car": "Audi",
"price": 40000,
"color": "blue"
}, {
"car": "BMW",
"price": 35000,
"color": "black"
}, {
"car": "Porsche",
"price": 60000,
"color ff": "green"
}
];
const json2csvParser = new Json2csvParser({ fields });
const csv = json2csvParser.parse(myCars);
res.setHeader("Content-Type", "application/csv");
res.setHeader("Content-Length" , csv.length);
res.setHeader("Content-type" ,"text/x-txt; charset=utf-8");
res.setHeader("Content-Disposition", "attachment; filename=surveyresponse.csv");
res.render('export', { listData: csv });;
Заголовок res будет генерировать csv. и на файле export.ejs просто напишите только
<%- listData %> then it will download as a csv.