freeCodeCamp/seed/get-challenge-completion.js

54 lines
1.5 KiB
JavaScript

/* eslint-disable no-process-exit */
/**
* Data creation script for academic data pushes. Run this script with
* node seed/get-challenge-completion.js >> ~/output.json
* For large data sets supply the flag --max_old_space_size=2000000 to node.
* Run from the root FCC directory. Beware, this will generate a very large file
* if you have a large user collection such as the production mongo db.
*/
require('dotenv').load();
var secrets = require('../config/secrets'),
mongodb = require('mongodb'),
MongoClient = mongodb.MongoClient;
MongoClient.connect(secrets.db, function(err, database) {
if (err) {
throw err;
}
var firstTime = true;
var stream = database.collection('user')
.find({'completedChallenges': { $ne: null },
'isLocked': { $ne: true } },
{'completedChallenges': true})
.stream();
console.log('[');
stream.on('data', function(results) {
if (!results.completedChallenges) {
// dud
} else {
var dataOut = [];
results.completedChallenges.forEach(function(challenge) {
dataOut.push({
name: challenge.name,
completedDate: challenge.completedDate,
solution: challenge.solution
});
});
if (dataOut.length) {
if (!firstTime) {
console.log(',' + JSON.stringify(dataOut));
} else {
firstTime = false;
console.log(JSON.stringify(dataOut));
}
}
}
}).on('end', function() {
console.log(']');
process.exit(0);
});
});