javascript - NodeJs check username and password return null -


i'm trying check entered username , password stored in database. solution not correct , think there might better code.

here far:

function login (username, password, callback) {     var query = "select  * users username = ?";      connection.query(query, [username], function (err, results) {         if (err) return callback(err);         if (results.length === 0) return callback();         var user = results[0];          if (!bcrypt.comparesync(password, user.password)) {             return callback();         }          callback(null,   {             id:          user.id.tostring(),         });      }); } app.get('/salam', function (req, res) {     var username = 'mahdi';     var originalpassword = 'a';      login(username , originalpassword,function (callback) {         console.log(callback);     }); }); 

in code, console.log(callback); returns null, usernames , passwords correct. how can fix this?

in success callback function, having 2 arguments in error callback, 1 argument.

in error , success case, value of first parameter null , in if (!bcrypt.comparesync(password, user.password)) { case, value of first argument undefined there no value being passed argument.

suggestion: use first argument boolean(false or true) , based on value, handle callback.

function login(username, password, callback) {    var query = "select  * users username = ?";      connection.query(query, [username], function(err, results) {      if (err) return callback(false);      if (results.length === 0) return callback();      var user = results[0];        if (!bcrypt.comparesync(password, user.password)) {        return callback(false);      }      callback(true, {        id: user.id.tostring(),      });      });  }  app.get('/salam', function(req, res) {    var username = 'mahdi';    var originalpassword = 'a';      login(username, originalpassword, function(success, value) {      if (success) {        console.log(value);      }    });  });


Comments