From 16d2e65ea05a2c0d1fc575ee3804625788bd1a21 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Sun, 9 Mar 2014 23:09:08 -0400 Subject: [PATCH] optimized getCategories --- src/categories.js | 83 +++++++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 38 deletions(-) diff --git a/src/categories.js b/src/categories.js index fb8e9b5990..71d66dcef1 100644 --- a/src/categories.js +++ b/src/categories.js @@ -168,7 +168,7 @@ var db = require('./database'), return callback(err); } - if (!cids || (cids && cids.length === 0)) { + if (!Array.isArray(cids) || !cids.length) { return callback(null, {categories : []}); } @@ -213,9 +213,7 @@ var db = require('./database'), sets.push('cid:' + cids[i] + ':read_by_uid'); } - db.isMemberOfSets(sets, uid, function(err, hasRead) { - callback(hasRead); - }); + db.isMemberOfSets(sets, uid, callback); }; Categories.hasReadCategory = function(cid, uid, callback) { @@ -279,19 +277,35 @@ var db = require('./database'), }; Categories.getCategoryData = function(cid, callback) { - db.exists('category:' + cid, function(err, exists) { - if (exists) { - db.getObject('category:' + cid, function(err, data) { - data.background = data.image ? 'url(' + data.image + ')' : data.bgColor; - data.disabled = data.disabled ? parseInt(data.disabled, 10) !== 0 : false; - callback(err, data); - }); - } else { - callback(new Error('No category found!')); - } + Categories.getCategoriesData([cid], function(err, categories) { + callback(err, categories ? categories[0] : null); }); }; + Categories.getCategoriesData = function(cids, callback) { + var keys = cids.map(function(cid) { + return 'category:'+cid; + }); + + db.getObjects(keys, function(err, categories) { + if (err) { + return callback(err); + } + + if (!Array.isArray(categories)) { + return callback(null, []); + } + + for (var i=0; i