docs: function (req, res) {
  
              //To avoid errors, escape table
              req.params.table = escape(req.params.table);
  
              //Get all fields from table
              lastQry = connection.query('SHOW COLUMNS FROM ??', req.params.table, function (err, rows) {
                  if (err) return sendError(res, err.code);
  
  
                  var fields, limit, order, where;
  
  
                  //All general Settings
  
  
                  //Select only certain columns?
                  if (typeof req.query[settings.paramPrefix + "fields"] !== "undefined" && typeof req.query[settings.paramPrefix + "fields"] == "string" && req.query[settings.paramPrefix + "fields"] !== "") {
                      var req_fields = escape(req.query[settings.paramPrefix + "fields"]);
                      if (checkIfFieldsExist(req_fields, rows)) {
                          fields = req_fields;
                      } else {
                          return sendError(res, "Failed to fetch all fields specified in _fields");
                      }
                  } else {
                      fields = '*';
                  }
  
                  //Parse order by and order direction
                  if (typeof req.query[settings.paramPrefix + "order"] !== "undefined" && typeof req.query[settings.paramPrefix + "order"] === "object") {
                      var orderObj = req.query[settings.paramPrefix + "order"];
                      var orderArr = [];
                      for (var order_field in orderObj) {
                          if (orderObj.hasOwnProperty(order_field)) {
                              if (checkIfFieldsExist(order_field, rows)) {
                                  if (orderObj[order_field].toUpperCase() == "ASC" || orderObj[order_field].toUpperCase() == "DESC") {
                                      orderArr.push(req.params.table + ".`" + order_field + "` " + orderObj[order_field].toUpperCase());
                                  } else {
                                      return sendError(res, "Order option for " + order_field + " in _order is invalid. Please use either ASC or DESC");
                                  }
                              } else {
                                  return sendError(res, "Failed to fetch " + order_field + " specified in _order");
                              }
                          }
                      }
                      order = orderArr.join(',');
                  }
  
                  //Parse limit
                  if (typeof req.query[settings.paramPrefix + "limit"] !== "undefined" && typeof req.query[settings.paramPrefix + "limit"] === "string" && req.query[settings.paramPrefix + "limit"] !== "") {
  
                      var limitStr = req.query[settings.paramPrefix + "limit"];
  
  
                      var limitArr = limitStr.split(',');
                      if (limitArr.length > 2) {
                          return sendError(res, "Limit specificed in _limit is invalid. Limit does not allow more than 2 comma separated values");
                      }
                      for (var i = 0; i < limitArr.length; i++) {
                          var lim = parseInt(limitArr[i]);
                          if (isNaN(lim)) {
                              return sendError(res, "Limit specificed in _limit is invalid. Please use a comma to separate start and amount");
                          }
                          limitArr[i] = lim;
                      }
  
                      limit = limitArr.join(',');
  
                  }
  
  
                  //Parse all other get params as selector
                  var whereArr = [];
  
                  for (var q in req.query) {
                      if (req.query.hasOwnProperty(q)) {
                          if (q.substr(0, 1) !== settings.paramPrefix) {
                              if (checkIfFieldsExist(q, rows)) {
  
                                  if (typeof req.query[q] === "string") {
                                      //If it is a simple string, the api assumes = as the operator
                                      whereArr.push(mysql.format('?? = ?', [q, escape(req.query[q])]));
  
                                  } else if (typeof req.query[q] === "object") {
  
                                      for (var selector in req.query[q]) {
                                          if (req.query[q].hasOwnProperty(selector)) {
                                              var op, val = connection.escape(escape(req.query[q][selector]));
                                              //MYSQLify the operator
                                              switch (selector.toUpperCase()) {
                                                  case 'GREAT':
                                                      op = "> ";
                                                      break;
                                                  case 'SMALL':
                                                      op = "< ";
                                                      break;
                                                  case 'EQGREAT':
                                                      op = '>= ';
                                                      break;
                                                  case 'EQSMALL':
                                                      op = '<= ';
                                                      break;
                                                  case 'IN':
                                                      op = 'IN (';
                                                      val = escape(req.query[q][selector]).split(',').map(function (item) {
                                                          return connection.escape(item);
                                                      }).join(',') + ')';
                                                      break;
                                                  case 'LIKE':
                                                      op = 'LIKE ';                                            
                                                      break;
                                                  case 'EQ':
                                                      op = '= ';
                                                      break;
                                                  default:
                                                      op = '= ';
                                                      break;
                                              }
                                              whereArr.push(mysql.format('?? ' + op + val, [q]));
                                          }
                                      }
  
                                  } else {
                                      return sendError(res, "Can't read parameter specified for the field " + q + " in the table " + req.params.table);
                                  }
  
  
                              } else {
                                  return sendError(res, "Can't find the field" + q + " in the table " + req.params.table);
                              }
                          }
                      }
                  }
  
                  if (whereArr.length > 0) {
                      where = whereArr.join(' AND ')
                  }
  
                  //Bring in MYSQL syntax
                  fields = fields ? fields : '*';
                  order = order ? 'ORDER BY ' + order : '';
                  limit = limit ? 'LIMIT ' + limit : '';
                  where = where ? 'WHERE ' + where : '';
  
                  //Fire query
                  lastQry = connection.query("SELECT " + fields + " FROM ?? " + where + " " + order + " " + limit, [req.params.table], function (err, rows) {
                      if (err) return sendError(res, err.code);
                      res.send({
                          result: 'success',
                          json: rows,
                          table: req.params.table,
                          length: rows.length
                      });
                  });
              });
          }