let fs = require('fs'); Meteor.methods({ "exportMissingSales": async function() { try { let products = await Products.find({}).fetchAsync(); let venues = await Venues.find({}).fetchAsync(); let measures = await Measures.find({}).fetchAsync(); let productNameMap = {}; let venueNameMap = {}; let measureNameMap = {}; let sales = await Sales.find({createdAt: {$gte: moment.utc("2017-01-28", "YYYY-MM-DD").toDate(), $lt: moment.utc("2017-01-29", "YYYY-MM-DD").toDate()}}).fetchAsync(); let output = ""; for(let i = 0; i < products.length; i++) { productNameMap[products[i]._id] = products[i].name; } for(let i = 0; i < venues.length; i++) { venueNameMap[venues[i]._id] = venues[i].name; } for(let i = 0; i < measures.length; i++) { measureNameMap[measures[i]._id] = measures[i].name; } for(let i = 0; i < sales.length; i++) { let sale = sales[i]; let saleOutput = '{\n\t"date": ' + sale.date + ',\n\t "amount": ' + sale.amount + ',\n\t "price": ' + sale.price + ',\n\t "venue": "' + venueNameMap[sale.venueId] + '",\n\t "product": "' + productNameMap[sale.productId] + '",\n\t "measure": "' + measureNameMap[sale.measureId] + '",\n\t "createdAt": "' + sale.createdAt + '"\n}'; if(output.length > 0) { output += ",\n"; } else { output = "["; } output += saleOutput; } fs.writeFile("./exportedMissingSales.json", output, function(err) { if(err) console.log(err); }); output += "]"; console.log(output); } catch(err) { console.log(err); } } });