title: Express routes are conflicting
body: <p>I have the following express routes defined:</p>
  
  <pre><code>// Questions Routes 
  app.route('/questions')
      .get(questions.list)
      .post(users.requiresLogin, questions.create);
  
  app.route('/questions/:questionId')
      .get(questions.read)
      .put(users.requiresLogin, questions.hasAuthorization, questions.update)
      .delete(users.requiresLogin, questions.hasAuthorization, questions.delete);
  
  app.route('/questions/list/:page')
              .get(questions.questionList);
  
  app.route('/questions/count/')
              .get(questions.count);
  </code></pre>
  
  <p>Along with this callback trigger for the <code>questionId</code> route parameter:</p>
  
  <pre><code>app.param('questionId', questions.questionByID);
  </code></pre>
  
  <p>The expected behavior was to have <code>/questions/count</code> requests route to the count method in a controller, but it is instead being routed to the <code>questionByID</code> method and I'm seeing this error:</p>
  
  <pre><code>CastError: Cast to ObjectId failed for value "count" at path "_id"
  ...
  at exports.questionByID (/path/controllers/questions.server.controller.js:137:56)
  ...
  </code></pre>
  
  <p>I think this appears because mongoose is trying to convert the literal "count" from the route to an ObjectId type, which would make sense if I was using the <code>/questions/:questionId</code> route but it doesn't if I'm using <code>/questions/count</code> to make the request.</p>
  
  <p>These are the two relevant methods in questions.server.controller.js</p>
  
  <pre><code>exports.count = function (req, res) {
      console.log('attempting to count these damn questions!');
      Question.count({}, function (err, count) {
          if (err) {
              return res.status(400).send({
                  message: errorHandler.getErrorMessage(err)
              });
          } else {
              console.log(count);
              res.jsonp(count);
          }
      });
  };
  
  /**
   * Question middleware
   */
  exports.questionByID = function (req, res, next, id) {
      Question.findById(id).populate('user', 'displayName').exec(function (err, question) {
          if (err) return next(err);
          if (!question) return next(new Error('Failed to load Question ' + id));
          req.question = question;
          next();
      });
  };
  </code></pre>
  
  <p>I've fixed it by setting the route to:</p>
  
  <pre><code>app.route('/questionscount')
              .get(questions.count);
  </code></pre>
  
  <p>But it looks bad and I don't want to do it like that, does anyone know why this is happening?</p>
  
  <p>Thanks in advance.</p>