freeCodeCamp/seed/challenge-migration.js

59 lines
1.5 KiB
JavaScript

require('dotenv').load();
var bonfires = require('./bonfires.json'),
app = require('../server/server'),
mongodb = require('mongodb'),
MongoClient = mongodb.MongoClient,
User = app.models.User,
UserIdentity = app.models.userIdentity,
oldUri='mongodb://localhost:27017/app30893198',
coursewares = require('./coursewares.json');
var counter = 0;
var offerings = 2;
var CompletionMonitor = function() {
counter++;
console.log('call ' + counter);
if (counter < offerings) {
return;
} else {
process.exit(0);
}
};
MongoClient.connect(oldUri, function(err, database) {
database.collection('users').find({}).batchSize(20).toArray(function(err, users) {
if (users !== null && users.length !== 0) {
var mappedUserArray = users.map(function(user) {
Object.keys(user.profile).forEach(function(prop) {
user[prop] = user.profile[prop];
});
Object.keys(user.portfolio).forEach(function(prop) {
user[prop] = user.portfolio[prop];
});
user.completedCoursewares = Object.keys(user.challengesHash)
.filter(function(key) {
return user.challengesHash[key] !== 0;
})
.map(function(key) {
return({
id: coursewares[key].id,
completedDate: user.challengesHash[key]
});
});
return user;
});
User.create(mappedUserArray, function(err) {
if (err) {
console.log(err);
}
console.log("a batch finished");
});
}
});
});