Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 7th, 2012  |  syntax: None  |  size: 1.76 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Node.JS MySQL Callback
  2. var libUser = {
  3.     lookupUser: {},
  4.     getName: function(userID) {
  5.         // If it's in our cache, just return it, else find it, then cache it.
  6.         if('userName_' + userID in this.lookupUser) {
  7.             return this.lookupUser['userName_' + userID];
  8.         }else{
  9.             // Lookup the table
  10.             var userName;
  11.             this.tableLookup(["agent_name"], "_login_", " WHERE agent_id = " + userID, function(d) {
  12.                 userName = d[0].agent_name;
  13.             });
  14.  
  15.             this.lookupUser['userName_' + userID] = userName; // Add to cache
  16.  
  17.             return userName;
  18.         }
  19.     },
  20.     tableLookup: function(fields, table, clauses, cb) {
  21.         var query = "SELECT " + fields.join(", ") + " FROM " + table + " " + clauses;
  22.         client.query(query, function(err, results) {
  23.             if(err) console.log(err.error);
  24.  
  25.             cb(results);
  26.         });
  27.     }
  28. };
  29.        
  30. var userName; // user name is undefined
  31.  this.tableLookup(["agent_name"], "_login_", " WHERE agent_id = " + userID, function(d) {
  32.      // this will run later
  33.      userName = d[0].agent_name;
  34.  });
  35.  
  36.  // username still undefined
  37.  return userName;
  38.        
  39. getName: function(userID, cb) {
  40.     var that = this;
  41.     // If it's in our cache, just return it, else find it, then cache it.
  42.     if ('userName_' + userID in this.lookupUser) {
  43.         cb(this.lookupUser['userName_' + userID]);
  44.     } else {
  45.         // Lookup the table
  46.         var userName;
  47.         this.tableLookup(["agent_name"], "_login_", " WHERE agent_id = " + userID, function(d) {
  48.             userName = d[0].agent_name;
  49.  
  50.             that.lookupUser['userName_' + userID] = userName; // Add to cache
  51.             cb(userName);
  52.         });
  53.     }
  54. },
  55.        
  56. libUser.getName(name, function (user) {
  57.   // do something
  58. });