freeCodeCamp/get-challenge-completion.js

47 lines
1.4 KiB
JavaScript
Raw Normal View History

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