mongodb - How to properly convert an objects array to a CSV file with Node.js? -


i need perform mongo query , convert results csv file. i've came across node-csv can't figure out how pass query results module convert , generate file.

so i've read (adapting code bit fit query example):

var generate = require('csv-generate');  var generator = generate({objectmode: true, headers: 7});  var columns = {   _id: '_id',   first_name: 'first_name',   last_name: 'last_name',   team: 'team.name',   position: 'position',   status: 'status' }; var stringifier = stringify({ header: true, columns: columns });  generator.pipe(stringifier).pipe(process.stdout); 

and queries like:

player.find({},{_id: true, first_name: true, last_name: true, "team.name": true, position: true, status:true}).exec(function (err,players){   // should convert csv string , generate file here }); 

however can't figure out steps should follow in order generate csv string , convert file example.

the way (which memory friendly) use streams. first, mongodb request:

collection.find({ some: "thing" }, function (err, cursor) {     if (err) { return ...; }     function next () {       cursor.nextobject(function (err, obj) {          if (err) { return ...; }          if (obj === null) {               return outputstream.end();          }          outputstream.write(stringify(obj));          next();       });     }     next(); }); 

...the outputstream http response stream (supposing inside of http server request - response) or other writable stream.

this more or less basic example -- improved, that's how recommend it: stringify objects 1 one , write them in stream.


Comments