Remove mongoose style lookup from fieldguide.js. Update user model.

This commit is contained in:
terakilobyte
2015-06-11 15:33:38 -04:00
parent 0b1c23207d
commit 0aa83f1bb9
2 changed files with 50 additions and 48 deletions

View File

@ -126,9 +126,8 @@
"type": "string" "type": "string"
}, },
"sentSlackInvite": { "sentSlackInvite": {
"type": { "type": "boolean",
"type": false "default": false
}
}, },
"resetPasswordExpires": { "resetPasswordExpires": {
"type": "string" "type": "string"
@ -145,10 +144,12 @@
"completedDate": "string", "completedDate": "string",
"solution": "string" "solution": "string"
} }
] ],
"default": []
}, },
"uncompletedCoursewares": { "uncompletedCoursewares": {
"type": "array" "type": "array",
"default": []
}, },
"completedCoursewares": { "completedCoursewares": {
"type": [ "type": [
@ -164,7 +165,8 @@
"githubLink": "string", "githubLink": "string",
"verified": "boolean" "verified": "boolean"
} }
] ],
"default": []
}, },
"completedFieldGuides": { "completedFieldGuides": {
"type": [] "type": []
@ -217,7 +219,8 @@
"default": [] "default": []
}, },
"uncompletedChallenges": { "uncompletedChallenges": {
"type": "array" "type": "array",
"default": []
} }
}, },
"validations": [], "validations": [],

View File

@ -1,7 +1,7 @@
var R = require('ramda'), var R = require('ramda'),
// Rx = require('rx'), // Rx = require('rx'),
// debug = require('debug')('freecc:fieldguides'), // debug = require('debug')('freecc:fieldguides'),
utils = require('../utils'); utils = require('../utils');
module.exports = function(app) { module.exports = function(app) {
var router = app.loopback.Router(); var router = app.loopback.Router();
@ -48,7 +48,7 @@ module.exports = function(app) {
} }
var fieldGuide = R.head(fieldGuideFromMongo); var fieldGuide = R.head(fieldGuideFromMongo);
fieldGuide.name.toLowerCase().replace(/\s/g, '-').replace(/\?/g, ''); fieldGuide.name.toLowerCase().replace(/\s/g, '-').replace(/\?/g, '');
// if (fieldGuide.dashedName !== dashedNameFromQuery) { // if (fieldGuide.dashedName !== dashedNameFromQuery) {
// return res.redirect('../field-guide/' + fieldGuide.dashedName); // return res.redirect('../field-guide/' + fieldGuide.dashedName);
@ -80,45 +80,44 @@ module.exports = function(app) {
return res.redirect('/field-guide/how-do-i-use-this-guide'); return res.redirect('/field-guide/how-do-i-use-this-guide');
} }
var displayedFieldGuides = FieldGuide.find({'id': req.user.uncompletedFieldGuides[0]},
FieldGuide.find({'id': req.user.uncompletedFieldGuides[0]}); function(err, fieldGuide) {
displayedFieldGuides.exec(function(err, fieldGuide) { if (err) { return next(err); }
if (err) { return next(err); } fieldGuide = fieldGuide.pop();
fieldGuide = fieldGuide.pop();
if (typeof fieldGuide === 'undefined') { if (typeof fieldGuide === 'undefined') {
if (req.user.completedFieldGuides.length > 0) { if (req.user.completedFieldGuides.length > 0) {
req.flash('success', { req.flash('success', {
msg: [ msg: [
"You've read all our current Field Guide entries. If you have ", "You've read all our current Field Guide entries. If you have ",
'ideas for other Field Guide articles, please let us know on ', 'ideas for other Field Guide articles, please let us know on ',
"<a href='https://github.com/freecodecamp/freecodecamp/issues/new?&body=Please describe your idea for a Field Guide article and include links if possible.'>GitHub</a>." "<a href='https://github.com/freecodecamp/freecodecamp/issues/new?&body=Please describe your idea for a Field Guide article and include links if possible.'>GitHub</a>."
].join('') ].join('')
}); });
}
return res.redirect('../field-guide/how-do-i-use-this-guide');
} }
return res.redirect('../field-guide/how-do-i-use-this-guide'); return res.redirect('../field-guide/' + fieldGuide.dashedName);
} });
return res.redirect('../field-guide/' + fieldGuide.dashedName);
});
}
function completedFieldGuide(req, res, next) {
var fieldGuideId = req.body.fieldGuideInfo.fieldGuideId;
req.user.completedFieldGuides.push(fieldGuideId);
var index = req.user.uncompletedFieldGuides.indexOf(fieldGuideId);
if (index > -1) {
req.user.progressTimestamps.push(Date.now());
req.user.uncompletedFieldGuides.splice(index, 1);
}
req.user.save(function (err) {
if (err) {
return next(err);
}
res.send(true);
});
} }
}; };
function completedFieldGuide(req, res, next) {
var fieldGuideId = req.body.fieldGuideInfo.fieldGuideId;
req.user.completedFieldGuides.push(fieldGuideId);
var index = req.user.uncompletedFieldGuides.indexOf(fieldGuideId);
if (index > -1) {
req.user.progressTimestamps.push(Date.now());
req.user.uncompletedFieldGuides.splice(index, 1);
}
req.user.save(function (err) {
if (err) {
return next(err);
}
res.send(true);
});
}