Skip to content

Instantly share code, notes, and snippets.

@Lazhari
Created August 1, 2015 01:39
Show Gist options
  • Save Lazhari/9e5bd6b0024c923b0997 to your computer and use it in GitHub Desktop.
Save Lazhari/9e5bd6b0024c923b0997 to your computer and use it in GitHub Desktop.
Beautiful Code with async and callbacks function
var database = require('../../../models');
var async = require('async');
var VisitorApi = (function() {
/**
* Public Functions
*/
var _countVisitorsByOperator = function(operator,value,callback) {
var query = {};
query[operator] = value;
database.getCollection('Visitor').count(query).exec(function(err, visitors) {
if(err) return callback(err);
return callback(null,visitors);
});
};
var _gettatisticByCriteria = function(criteria, done) {
database.getCollection('Visitor').distinct(criteria, function(err, systems) {
if(err) return done(err);
if(systems) {
async.map(systems, function(system,callback) {
_countVisitorsByOperator(criteria,system, function(err, result) {
if(err) return callback(err);
var statObj = {};
statObj[system] = result;
return callback(null,statObj);
})
}, function(err, data) {
return done(err, data);
});
} else {
return done(null, {});
}
});
};
/**
* Private Functions
*/
return {
getStatisticsByCriteria : function(req, res, next) {
var criteria = req.query.criteria;
_gettatisticByCriteria(criteria, function(err, data) {
if(err) return res.status(500).send({message: err.message});
return res.status(200).send(data);
})
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment