2017-04-21 2 views
1

키워드 this을 사용하여 사용자 인스턴스에 저장된 암호에 액세스하려고하는데 작동하지 않습니까?Sequelize 인스턴스 메소드가 작동하지 않습니까?

여기 내가 코드를 호출 할 때의 코드입니다.

Users.find({where: {$or: [{ email: email} ,{ username: username }]}}) 
    .then(user => { 
    if (!user) return res.status(401).send(new errors.Unauthorized('Email/Username or Password Not Found!')); 

    user.authenticate(password, (err, match) => { 
     if (err) return res.status(401).send(err); 
     res.send(user); 
    }); 
    }) 
    .catch(err => res.send(err)); 

다음은 내 인스턴스 메소드 코드입니다.

instanceMethods :{ 
     authenticate: (password, cb) => { 
     return bcrypt.compare(password, this.password, (err, match) => { 
      if (err) return cb(new errors.Unauthorized()); 
      return cb(null, match); 
     }); 
     } 
    } 

답변

4

당신은 thiscall() 또는 apply() 통해 결합 될하지 않는 화살표 기능을 사용합니다. MDN 참조 :

화살표 함수에 바인딩되어 있지 않으므로 call() 또는 apply() 메서드는 매개 변수를 전달할 수만 있습니다. 이것은 무시됩니다. 전술 한 바와 같이, 화살표 함수식 비있어서 기능에 가장 적합한

또한,

...

이 GitHub의 문제를 참조뿐만 https://github.com/sequelize/sequelize/issues/5858

화살표 기능의 범위를 재정의 할 수있는 방법이 없습니다. 이것이 주요 기능 중 하나입니다. 여기에는 할 수있는 것이 없습니다.

관련 문제