code: function (clt_name, onSuccess, onFail, query_obj) {
  
  	// error check
  	var collection = l_getCollection(clt_name, onFail);
  	if (collection === undefined) {
  		return;
  	}
  
  	var is_empty = (query_obj === undefined ||
  					l_isEmpty(query_obj));
  	var query = {};
  
  	// check if there's a specific query
  	if (query_obj !== undefined) {
  		query = query_obj;
  	}
  
  	// if not in cache, get data from DB and cache in memory
  	//LOG.sys('data caching from [' + clt_name + '], query: ' + query + '...', 'SR.DB');
  
  	try {
  
  		// load all documents from the DB
  		collection.findOne(query,
  			function (err, data)
  			{
  				if (err) {
  					return l_notifyError(clt_name, 'cacheData', err, onFail);
  				}
  
  				// something returned but is empty
  				if (data === undefined ||
  					data === null ||
  					data === '') {
  
  					LOG.warn('data not found for [' + clt_name + '] query: ' + JSON.stringify(query), 'SR.DB');
  					return UTIL.safeCall(onSuccess, null);
  				}
  
  				// store all if is_empty, or store single object
  				if (is_empty) {
  					collection.cache = data;
  					//LOG.sys('caching all objects...', 'SR.DB');
  				} else {
  					collection.cache[data._id] = data;
  					//LOG.sys('caching single object, query: ' + query_obj, 'SR.DB');
  				}
  
  				//LOG.sys('returning data for id: ' + data._id, 'SR.DB');
  				UTIL.safeCall(onSuccess, data);
  			}
  		);
  	} catch (err) {
  		l_notifyError(clt_name, 'cacheData.exception', err, onFail, true);
  	}
  }
docs: ----------------------------------------- cache data for a given collection