Skip to content

Instantly share code, notes, and snippets.

@loopiezlol
Created May 11, 2017 12:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loopiezlol/ebfdac55d13d6ebbbc88c68b71ae2971 to your computer and use it in GitHub Desktop.
Save loopiezlol/ebfdac55d13d6ebbbc88c68b71ae2971 to your computer and use it in GitHub Desktop.
const User = require('../../app/models/user');
module.exports = function() {
const query = {
topics: { $exists: true},
'onboardingSteps.0': 'revision',
}
/* eslint-disable */
const o = {},
self = this;
o.query = query;
o.verbose = true;
// o.limit = 500;
o.map = function() {
function extractLevelMajority (topicsArray) {
const BEGINNER_ID = '578cb033c774cd4d3949b82a';
const BASIC_ID = '554373512de2f98af6ea5bc6';
const MEDIUM_ID = '554373512de2f98af6ea5bd0';
const EXPERT_ID = '554373512de2f98af6ea5bcc';
let beginner = 0;
let basic = 0;
let medium = 0;
let expert = 0;
topicsArray.map(l => l.valueOf()).forEach(levelId => {
if (levelId === BEGINNER_ID) {
beginner += 1;
} else if (levelId === BASIC_ID) {
basic += 1;
} else if (levelId === MEDIUM_ID) {
medium += 1;
} else if (levelId === EXPERT_ID) {
expert += 1;
}
})
// console.log(beginner, basic, medium, expert);
if (beginner > basic && beginner > medium && beginner > expert) {
return 'beginner';
} else if (basic > beginner && basic > medium && basic > expert) {
return 'basic';
} else if (medium > beginner && medium > basic && medium > expert) {
return 'medium';
} else if (expert > beginner && expert > medium && expert > basic) {
return 'expert';
}
return 'no-majority';
}
const label = extractLevelMajority(this.topics.map(t => t.levelId || '').filter(Boolean));
emit(this._id, label);
}
/* eslint-enable */
User.mapReduce(o, (err, results) => {
if (err) throw err;
const r = results.reduce((acc, val) => {
acc[val.value] = acc[val.value] + 1 || 1;
return acc;
}, {});
console.log(r);
process.exit(0);
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment