渲染 EJS 视图中的 Mongoose 对象到 CSV
Posted
技术标签:
【中文标题】渲染 EJS 视图中的 Mongoose 对象到 CSV【英文标题】:Mongoose Object to CSV in Rendered EJS view 【发布时间】:2019-01-20 04:42:21 【问题描述】:我目前有一个应用程序,它呈现一个 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】:您应该使用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.
【讨论】:
数据已经渲染到页面了。然后我将如何使用它来导出到 csv? 我编辑最后一行代码 res.render('export', listData: csv );制作一个 export.ejs 文件,然后它将作为 csv 文件下载以上是关于渲染 EJS 视图中的 Mongoose 对象到 CSV的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 express .node 、 mongoose 和 ejs 删除对象
我想使用 Jquery .change(function... (JS, EJS, Mongoose, Express) 显示数组中的特定项目