我已经编写了代码,可以在网页上显示所有记录的列表,但是我需要将其以CSV(逗号分隔值)文件的形式获取。
现在页面显示的列表如下:
Name Address Description
Bob 1 street Journalist
Bill 2 street Fireman
etc...
无论如何,我都可以让Meteor创建一个CSV文件供下载,而不是显示为带有所有HTML标记的网页吗?
我已经编写了代码,可以在网页上显示所有记录的列表,但是我需要将其以CSV(逗号分隔值)文件的形式获取。
现在页面显示的列表如下:
Name Address Description
Bob 1 street Journalist
Bill 2 street Fireman
etc...
基于如何使用iron router或meteor本身提供文件服务?
HTML:
<template name="blah">
<a href="{{pathFor 'csv'}}">Download the CSV</a>
</template>
JS:
// An example collection
var DummyData = new Mongo.Collection("dummyData");
// create some sample data
if (Meteor.isServer) {
Meteor.startup(function() {
var dummyDataCursor = DummyData.find();
if (dummyDataCursor.count() === 0) {
for(var i=1; i<=100; i++) {
DummyData.insert({Name: "Name" + i,Address: "Address" + i, Description:"Description" + i});
}
}
});
}
Router.route('/csv', {
where: 'server',
action: function () {
var filename = 'meteor_dummydata.csv';
var fileData = "";
var headers = {
'Content-type': 'text/csv',
'Content-Disposition': "attachment; filename=" + filename
};
var records = DummyData.find();
// build a CSV string. Oversimplified. You'd have to escape quotes and commas.
records.forEach(function(rec) {
fileData += rec.Name + "," + rec.Address + "," + rec.Description + "\r\n";
});
this.response.writeHead(200, headers);
return this.response.end(fileData);
}
});
meteor add iron:router
。 - cobberboy'click .btnExportCSVFormat' : function(e) { window.location.href = '/export-csv/' + $(e.target).attr('data-list-id'); }
解决了我的问题,这样在下载完成后无需对视图进行任何操作或弹出新窗口或选项卡以关闭。也许有更简洁的方法,但现在这个方案对我很有效。谢谢! - WizzyBoom