title: bcrypt Error: data and hash arguments required
body: <p>I am getting a bcrypt error stating that data and hash arguments are required, referencing line #44 in my routes.js file. From what I can tell, I am passing that information: the first parameter to bcrypt.compare is the user entered password, and the second is the hashed password retrieved from the db. What am I doing wrong?</p>
  
  <pre><code>bcrypt.compare(req.params.password, user.password, function...
  </code></pre>
  
  <p><strong>routes.js</strong></p>
  
  <pre><code>'use strict'
  
  var express = require('express');
  var router = express.Router();
  var User = require('../app/models/user');
  //password hashing
  var bcrypt = require('bcrypt');
  
  var count = 0;
  
  router.use(function(req, res, next) {
      count++;
      console.log('API hit count = %s', count);
      next();
  });
  
  // /users post(create new user) get(specific user)
  router.route('/users')
      .post(function(req,res) {
          var user = new User();
          user.username = req.body.username;
          user.password = bcrypt.hashSync(req.body.password, 10);
  
          //save the user and checkfor errors
          user.save(function(err) {
              if (err) {
                  res.send(err);
              } else {
                  res.json({message: "User created!"});
              }    
          });
  
      })
  
  router.route('/users/:username')
      .get(function(req, res) {
          var query = {
              username: req.params.username,
          };
          User.findOne(query, function(err, user) {
              if (err) { 
                  res.send(err);
              } else {
                  bcrypt.compare(req.params.password, user.password, function(err, res) {
                      if(err) {
                          console.log('Comparison error: ', err);
                      }
                  })
                  res.json(user);
              }
          });
      })
  </code></pre>