Объект Mongoose для CSV в визуализированном представлении EJS

57
4

В настоящее время у меня есть приложение, которое отображает страницу 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>

Я попытался установить различные страницы, но все они работают на стороне сервера, и, хотя это не проблема, я не уверен, как реализовать их на стороне клиента и вернуть эти данные на соответствующий маршрут.

спросил(а) 2018-08-13T15:36:00+03:00 2 года, 1 месяц назад
1
Решение
57

вы должны использовать 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.

ответил(а) 2018-08-13T16:03:00+03:00 2 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема