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

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

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

1
задан 13 August 2018 в 16:09

1 ответ

вы должны использовать 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.
0
ответ дан 15 August 2018 в 17:00
  • 1
    Данные уже представлены на странице. Как я мог бы использовать это для экспорта в csv? – ASTIN77 13 August 2018 в 20:57
  • 2
    Я редактирую последнюю строку кода res.render ('export', {listData: csv}); создайте файл export.ejs, затем он будет загружен как файл csv – Desert P 14 August 2018 в 13:51

Другие вопросы по тегам:

Похожие вопросы: