K
K
komigor2021-04-24 11:51:38
Node.js
komigor, 2021-04-24 11:51:38

TypeError: user.comparePassword is not a function?

An error pops up:

events.js:291
      throw er; // Unhandled 'error' event
      ^

TypeError: user.comparePassword is not a function
    at C:\Users\Admin\OneDrive\Рабочий стол\node.js\Class atternder\Class attender\config\passport.js:32:10
    at C:\Users\Admin\OneDrive\Рабочий стол\node.js\Class atternder\Class attender\node_modules\mongoose\lib\model.js:4884:16
    at C:\Users\Admin\OneDrive\Рабочий стол\node.js\Class atternder\Class attender\node_modules\mongoose\lib\model.js:4884:16
    at C:\Users\Admin\OneDrive\Рабочий стол\node.js\Class atternder\Class attender\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
    at C:\Users\Admin\OneDrive\Рабочий стол\node.js\Class atternder\Class attender\node_modules\mongoose\lib\model.js:4907:21
    at C:\Users\Admin\OneDrive\Рабочий стол\node.js\Class atternder\Class attender\node_modules\mongoose\lib\query.js:4447:11
    at C:\Users\Admin\OneDrive\Рабочий стол\node.js\Class atternder\Class attender\node_modules\kareem\index.js:136:16
    at processTicksAndRejections (internal/process/task_queues.js:79:11)
Emitted 'error' event on Function instance at:

here is the authentication strategy that I announced

passport.use(new LocalStrategy({ usernameField: 'email' }, (email, password, done) => {
  User.findOne({ email: email.toLowerCase() }, (err, user) => {
    if (err) { return done(err); }
    if (!user) {
      return done(null, false, { msg: `Email ${email} not found.` });
    }
    if (!user.password) {
      return done(null, false, { msg: 'Your account was registered using a sign-in provider. To enable password login, sign in using a provider, and then set a password under your user profile.' });
    }
    user.comparePassword(password, (err, isMatch) => {
      if (err) { return done(err); }
      if (isMatch) {
        return done(null, user);
      }
      return done(null, false, { msg: 'Invalid email or password.' });
    });
  });
}));

here is the comparePassword method in model
userScema.methods.comparePassword = function  comparePassword(candidatePassword, cb) {
    bcrypt.compare(candidatePassword, this.password, (err, isMatch) => {
        cb(err, isMatch);
    });
};

What is the problem?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
L
low molecular macro, 2021-04-24
@molekulyarniy

userSchema.methods.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question