freeCodeCamp/seed/get-challenge-completion.js

54 lines
1.5 KiB
JavaScript
Raw Normal View History

2015-12-25 21:17:15 +00:00
/* eslint-disable no-process-exit */
2015-12-26 05:31:13 +00:00
/**
* 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.
*/
2015-12-25 21:17:15 +00:00
require('dotenv').load();
var secrets = require('../config/secrets'),
mongodb = require('mongodb'),
2015-12-26 05:31:13 +00:00
MongoClient = mongodb.MongoClient;
2015-12-25 21:17:15 +00:00
MongoClient.connect(secrets.db, function(err, database) {
if (err) {
throw err;
}
var firstTime = true;
2015-12-26 05:31:13 +00:00
var stream = database.collection('user')
.find({'completedChallenges': { $ne: null },
'isLocked': { $ne: true } },
2015-12-26 05:31:13 +00:00
{'completedChallenges': true})
.stream();
console.log('[');
stream.on('data', function(results) {
if (!results.completedChallenges) {
// dud
} else {
var dataOut = [];
2015-12-26 05:31:13 +00:00
results.completedChallenges.forEach(function(challenge) {
dataOut.push({
2015-12-26 05:31:13 +00:00
name: challenge.name,
completedDate: challenge.completedDate,
solution: challenge.solution
2015-12-25 21:17:15 +00:00
});
2015-12-26 05:31:13 +00:00
});
if (dataOut.length) {
if (!firstTime) {
console.log(',' + JSON.stringify(dataOut));
} else {
firstTime = false;
console.log(JSON.stringify(dataOut));
}
2015-12-26 05:31:13 +00:00
}
}
}).on('end', function() {
console.log(']');
2015-12-25 21:17:15 +00:00
process.exit(0);
});
2015-12-26 05:31:13 +00:00
});