diff --git a/lib/index.js b/lib/index.js index fd3aca5..10cd9f6 100644 --- a/lib/index.js +++ b/lib/index.js @@ -14,36 +14,12 @@ mongodb.Collection.prototype.findOne = function findOne(){ if(args[0]['_id'] != undefined && args[0]['_id'] != null){ var db_name = this.db.databaseName; var key = db_name + '.' + args[0]['_id']; - redisClient.get(key, function(err, results){ - if(err || !results){ - args.push(function(err, results){ - if(!err && results){ - redisClient.set(key, JSON.stringify(results)); - } - callback(err, results); - }); - native_findOne.apply(self, args); - } else{ - callback(null, JSON.parse(results)); - } - }); + this._handle_findOne(key, args, callback); } else if(Object.keys(args[0]).length == 1){ var keys = Object.keys(args[0]); var db_name = this.db.databaseName; var key = db_name + '.' + keys[0] + '.' + args[0][keys[0]]; - redisClient.get(key, function(err, results){ - if(err || !results){ - args.push(function(err, results){ - if(!err && results){ - redisClient.set(key, JSON.stringify(results)); - } - callback(err, results); - }); - native_findOne.apply(self, args); - } else{ - callback(null, JSON.parse(results)); - } - }); + this._handle_findOne(key, args, callback); } else{ native_findOne.apply(this, arguments); } @@ -52,6 +28,23 @@ mongodb.Collection.prototype.findOne = function findOne(){ } }; +mongodb.Collection.prototype._handle_findOne = function _handle_findOne(key, args, callback){ + var redisClient = this.db.serverConfig['_redisClient']; + redisClient.get(key, function(err, results){ + if(err || !results){ + args.push(function(err, results){ + if(!err && results){ + redisClient.set(key, JSON.stringify(results)); + } + callback(err, results); + }); + native_findOne.apply(self, args); + } else{ + callback(null, JSON.parse(results)); + } + }); +}; + var native_server = mongodb.Server; mongodb.Server = function Server(host, port, options){ var options = (options)?options:{};