, nach viel zu kämpfen, werde ich meine Haupt Einsichten teilen, die sind nicht so offensichtlich zu denen, die ihre ersten Schritte in der Web-Entwicklung machen.
Das Exportieren nach CSV kann in zwei Hauptschritte unterteilt werden: 1. Anordnen Ihrer Daten in CSV-Struktur/Modell. 2. Exportieren der Daten/Download auf der Client-Seite.
Also ich werde es aufteilen. Der erste Schritt - Anordnen Ihrer Daten in CSV-Struktur/Modell: Um Ihre Daten in die CSV-Struktur zu bekommen, finden Sie höchstwahrscheinlich eine Bibliothek, die die zu exportierenden Daten in CSV formatiert. Wenn Ihr Datenmodell so komplex ist wie meines, müssen Sie eine benutzerdefinierte Funktion erstellen. So oder so sollte das nicht zu kompliziert sein. ein Beispiel für eine solche Funktion, die ich verwendet:
// The function gets a list of objects ('dataList' arg), each one would be a single row in the future-to-be CSV file
// The headers to the columns would be sent in an array ('headers' args). It is taken as the second arg
function dataToCSV(dataList,headers){
var allObjects = [];
// Pushing the headers, as the first arr in the 2-dimensional array 'allObjects' would be the first row
allObjects.push(headers);
//Now iterating through the list and build up an array that contains the data of every object in the list, in the same order of the headers
dataList.forEach(function(object){
var arr = [];
arr.push(object.id);
arr.push(object.term);
arr.push(object.Date);
// Adding the array as additional element to the 2-dimensional array. It will evantually be converted to a single row
allObjects.push(arr)
});
// Initializing the output in a new variable 'csvContent'
var csvContent = "";
// The code below takes two-dimensional array and converts it to be strctured as CSV
// *** It can be taken apart from the function, if all you need is to convert an array to CSV
allObjects.forEach(function(infoArray, index){
var dataString = infoArray.join(",");
csvContent += index < allObjects.length ? dataString+ "\n" : dataString;
});
// Returning the CSV output
return csvContent;
}
nun der zweite Schritt - Exportieren der Daten: Um die Daten zu exportieren, nach wenigen Möglichkeiten untersuchen, fand ich, dass die bequemste (für Ich sollte die Daten über den HTTP-Header senden und den Browser veranlassen, die Datei herunterzuladen und als CSV-Datei zu parsen. Dass ich mit dem folgenden Code aus:
//this statement tells the browser what type of data is supposed to download and force it to download
res.writeHead(200, {
'Content-Type': 'text/csv',
'Content-Disposition': 'attachment; filename=*custom_name*.csv'
});
// whereas this part is in charge of telling what data should be parsed and be downloaded
res.end(dataToCSV(dataList,["ID","Name","Date"]),"binary");
Abschließend ich diesen Beitrag gemacht, damit andere nicht kämpfen wie ich es tat, wenn es um den Export CSV kommt NodeJS mit und auszudrücken. Wenn Sie irgendwelche Fehler finden, oder Sie denken, dass einige der oben geschriebenen sollten gründlicher erklärt werden, lassen Sie es mich bitte wissen, und ich werde die notwendigen Änderungen vornehmen.
Mit freundlichen Grüßen.
Haben Sie überlegt, den mongoexport-Befehl zu verwenden? https://docs.mongodb.com/manual/reference/program/mongoexport/ – DevKyle