0

Part of "setuppassport.js"

function(req, username,password,done){
        console.log("in setduppassport.js");
        User.findOne({username:username}, function(err,user){

            if(err){
                return done(err);
            }
            if(!user){
                return done(null,false,{message:"No user has that id!"});
            }
            console.log("now check password1");
            console.log(user);
            var valid=user.checkPassword(password);
            if (valid){
                done(null, user);
            }
            else {
                done(null, false, {message:'Incorrect Passowrd.'});
            }
        /*
        var valid=user.checkPassword(user_pw){
            console.log("i wanna check my password is correct");
            if(err){return done(err);}
            if(correct){
                return done(null,user);
            }
            return done(null,false,{message:"Invalid password."});
        });
        */ 
    });

part of "user.js" in models folder

userSchema.methods.checkPassword= (input)=>{
    console.log("checkpassword");
    console.log(this);
    console.log("this.password =="+this.password);
    if (input==this.password){
        return true;
    }
    else{
        return false;    }
};

When I log "user" in setuppassport.js, I could get the below. { _id: ????, username: 'ju', password: '????', __v: }

But when I console "this" in user.js, I got empty set.

Why node.js cannot recognize this?

주혜민
  • 67
  • 6

1 Answers1

0

When you use arrow functions, they do not have this to their normal value. Use a normal function if you want to access this.

Khai
  • 342
  • 3
  • 7