2013-08-30 12 views
6

Desidero esportare la mia raccolta in un file CSV o XLSX tramite un pulsante (nessun sistema di accesso).Esportare la raccolta MongoDB in CSV o XLSX con Meteor/JavaScript

C'è un modo semplice per farlo con Meteor/JavaScript?

+1

Dovresti essere più specifico. E dipende dalla costruzione della tua collezione. Per cominciare potresti indagare su questo: http://jsfiddle.net/sturtevant/vUnF9/ –

+0

Vorrei chiedere di riconsiderare l'ultima risposta e di farmi conoscere le tue opinioni al riguardo. –

risposta

10

È possibile utilizzare qualcosa come https://github.com/eligrey/FileSaver.js per creare un BLOB sul lato browser e quindi offrirlo come download.

lato client js

var yourCSVData = "Col1Row1,Col2Row1\nCol1Row2,Col2Row2"; 

var blob = new Blob([yourCSVData], 
        {type: "text/csv;charset=utf-8"}); 
saveAs(blob, "yourfile.csv"); 

Costruisci il CSV in yourCSVData allora si dovrebbe essere in grado di avere il file scaricato molto facilmente.

Per creare il tuo CSV dovresti utilizzare un javascript personalizzato. La cosa con mongodb è che ogni documento può avere una struttura diversa, il che è molto negativo per i documenti di tipo riga/colonna.

Si potrebbe usare qualcosa come il violino data dal Yvegeniy (http://jsfiddle.net/sturtevant/vUnF9/) nei commenti di cui sopra & potrebbe aiutare

var data = MyCollection.find().fetch(); 
var yourCSVData = JSON2CSV(data); 
+0

ottima risposta! –

+0

Cosa succede se ho bisogno di iscrivermi alla raccolta completa e non solo una parte di esso come faccio sulla pagina in cui il download è attivo. Il motivo per il piccolo abbonamento è che la dimensione della raccolta rallenta la pagina fino allo stallo. – mjwrazor

0

Un modello rende perfettamente buon sistema di esportazione

{{#each documents}} 
    "{{field1}}","{{field2}}"<br/> 
    {{/each}} 

Il formato xlsx , mentre più brutto, si presta allo stesso trattamento.

Rendering di una pagina HTML è davvero la stessa cosa. Come sta generando un pdf. O generare SQL.

1

Considerando ultima Meteor 1.5 e gli ultimi pacchetti Meteor disponibili a partire da oggi, al di sotto sono i passi da seguire per convertire Mongo DB Collection a CSV (anche leggibile da MS Office come un fascino.)

  1. È necessario avere sotto i pacchetti installati prima di qualsiasi procedura riportata di seguito,

    pfafman:filesaver 
    harrison:papa-parse 
    
  2. Consideriamo un semplice modello di Blaze (Cioè MyTemplate.html) con un link scaricare sotto,

    <template name="MyTemplate"> 
        <body> 
        <a href="#" role="button" class="download">Download</a> 
        </body> 
    </template> 
    
  3. Allo stesso modo si può avere eventi gestore (cioè in MyTemplate.js) per gestire "Scarica" collegamento click evento,

    Template.MyTemplate.events({  
        'click .download': function (event, template) { 
         var data = MyCollection.find({}).fetch(); 
         var csv = Papa.unparse(data); 
         var blob = new Blob([csv], {type: "text/csv;charset=utf-8"}); 
         saveAs(blob, "MyCollection.csv"); 
        } 
    }); 
    

NOTA - Quando si fa clic sul collegamento per il download, non è possibile scaricare alcun popup o finestra di dialogo per procedere al download, ma lo scaricherà automaticamente in modo silenzioso.

Problemi correlati