title: TypeError: req.checkBody(...).optional(...).isDate is not a function
body: <p>I am facing issues using the express validator specifically it is the isDate function. I have taken steps to use expressvalidator, the bodyparse, validator module etc. All routes are after this only..
  Environment is Node + Express. </p>
  
  <p>The issue is on the usage of </p>
  
  <pre><code>"req.checkBody('date_of_birth', 'Invalid date').optional({ checkFalsy: true }).isDate();" 
  </code></pre>
  
  <p>and I keep getting the following <strong>error</strong>.</p>
  
  <pre><code>TypeError: req.checkBody(...).optional(...).isDate is not a function
      at exports.author_create_post (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/controllers/authorController.js:47:81)
      at Layer.handle [as handle_request] (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/layer.js:95:5)
      at next (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/route.js:137:13)
      at Route.dispatch (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/route.js:112:3)
      at Layer.handle [as handle_request] (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/layer.js:95:5)
      at /Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/index.js:281:22
      at Function.process_params (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/index.js:335:12)
      at next (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/index.js:275:10)
      at Function.handle (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/index.js:174:3)
      at router (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/index.js:47:12)
      at Layer.handle [as handle_request] (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/layer.js:95:5)
      at trim_prefix (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/index.js:317:13)
      at /Users/svitaworld/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/index.js:284:7
      at Function.process_params (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/index.js:335:12)
      at next (/Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/index.js:275:10)
      at /Users/mycomputer/Desktop/NodeJS/express-locallibrary-tutorial/node_modules/express/lib/router/index.js:635:15
  </code></pre>
  
  <p><strong>app.js</strong></p>
  
  <pre><code>app.use(logger('dev'));
  app.use(bodyParser.json());
  app.use(bodyParser.urlencoded({
    extended: false
  }));
  app.use(expressValidator()); // Add this after the bodyParser middlewares!
  app.use(cookieParser());
  app.use(express.static(path.join(__dirname, 'public')));
  
  app.use('/', index);
  app.use('/users', users);
  app.use('/catalog', catalog); // Add catalog routes to middleware chain.
  </code></pre>
  
  <p>in one of my controllers, I am using the isDate() method to do some validation on date that I have separately defined int he AuthorSchema.</p>
  
  <pre><code>var AuthorSchema = Schema(   {
    first_name: {type: String, required: true, max: 100},
    family_name: {type: String, required: true, max: 100},
    date_of_birth: {type: Date},
    date_of_death: {type: Date},   
  } );
  </code></pre>
  
  <p>Now to handle the post requests I have this code in the controller:</p>
  
  <p>authorController.js -- line from line 41-48</p>
  
  <pre><code>// Handle Author create on POST
  exports.author_create_post = function(req, res, next) {
    console.log("DEBUG: starting in exports.author_create_post");
    req.checkBody('first_name', 'First name must be specified.').notEmpty(); 
    req.checkBody('family_name', 'Family name must be specified.').notEmpty();
    req.checkBody('family_name', 'Family name must be alphanumeric text.').isAlpha();
    req.checkBody('date_of_birth', 'Invalid date').optional({ checkFalsy: true }).isDate(); // Error is on this usage of isDate()
    req.checkBody('date_of_death', 'Invalid date').optional({ checkFalsy: true }).isDate();
  </code></pre>