using map instead of eachSeries to load categories for /home. Error

handling.
v1.18.x
Julian Lam 12 years ago
parent 4b89b3e2ed
commit 5d48ed5fb4

@ -325,33 +325,40 @@ var RDB = require('./redis.js'),
return; return;
} }
var categories = []; // var categories = [];
function getCategory(cid, callback) { function getCategory(cid, callback) {
Categories.getCategoryData(cid, function(err, categoryData) { Categories.getCategoryData(cid, function(err, categoryData) {
if (err) { if (err) {
callback(err); winston.warn('Attempted to retrieve cid ' + cid + ', but nothing was returned!');
callback(null, null);
return; return;
} }
Categories.hasReadCategory(cid, current_user, function(hasRead) { Categories.hasReadCategory(cid, current_user, function(hasRead) {
categoryData.badgeclass = (parseInt(categoryData.topic_count, 10) === 0 || (hasRead && current_user !== 0)) ? '' : 'badge-important'; categoryData.badgeclass = (parseInt(categoryData.topic_count, 10) === 0 || (hasRead && current_user !== 0)) ? '' : 'badge-important';
categories.push(categoryData); // categories.push(categoryData);
callback(null); callback(null, categoryData);
}); });
}); });
} }
async.eachSeries(cids, getCategory, function(err) { async.map(cids, getCategory, function(err, categories) {
if (err) { if (err) {
winston.err(err); winston.err(err);
callback(null); callback(null);
return; return;
} }
categories = categories.sort(function(a, b) { return parseInt(a.order, 10) - parseInt(b.order, 10); }); categories = categories.filter(function(category) {
// Remove categories that have errored out
if (category) return true;
else return false;
}).sort(function(a, b) {
// Sort categories into their defined order
return parseInt(a.order, 10) - parseInt(b.order, 10);
});
callback({ callback({
'categories': categories 'categories': categories

Loading…
Cancel
Save