2014-12-01 15 views
5

Tôi đã viết mã của mình cho đến nay và có thể có danh sách tất cả các bản ghi để hiển thị trên trang web, tuy nhiên tôi cần có thể lấy nó dưới dạng CSV (tệp giá trị được phân cách bằng dấu phẩy).Tạo một tệp CSV từ Bộ sưu tập Meteor.js

Ngay bây giờ trang hiển thị một danh sách như sau:

Name  Address  Description 
Bob  1 street  Journalist 
Bill  2 street  Fireman 
etc... 

Dù sao tôi có thể có thiên thạch tạo ra một tập tin CSV để tải về, thay vì nó hiển thị như một trang web với tất cả các đánh dấu HTML?

+0

thể trùng lặp của [Làm thế nào để phục vụ cho một tập tin sử dụng router sắt hoặc Meteor bản thân?] (Http: //stackoverflow.com/questions/21565991/how-to-serve-a-file-using-iron-router-or-meteor-itself) –

Trả lời

7

Dựa trên How to serve a file using iron router or meteor itself?

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); 
    } 
}); 
+0

Tôi nên lưu ý: điều này đòi hỏi phải có trên bộ định tuyến. '' 'meteor add iron: router'''. – cobberboy

+0

Ok, đẹp. Không nhận ra tôi có thể sử dụng Iron Router như thế. Cảm ơn bạn cobberboy, đó là rất hữu ích. Tôi sẽ thử điều đó và sẽ đăng lại để cập nhật. – npderi

+0

Điều này thật tuyệt vời và hoạt động tốt. Tuy nhiên những gì tôi đang chạy lên bây giờ là khi tôi nhấp vào nút tuyến đường tôi đến '/ csv' tuyến đường phía máy chủ của tôi, các mẫu có nút trên nó bị phá hủy và xem của tôi bị mất? Có cách nào để giữ lại tất cả các mẫu được nạp, VÀ không có chúng bị hủy và vẫn chạy tuyến '/ csv' trên máy chủ không? Hoặc một cái gì đó giống như một phương pháp ngăn chặn mẫu phá hủy hoặc Router.go() tại kết thúc của tuyến đường phía máy chủ CSV ... hoặc một cái gì đó ...? – WizzyBoom

Các vấn đề liên quan