-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
db.findOne() 에서 이메일이 맞을 시에 해당 유저 정보가 전부 다 가져와지는 건가요?
21.09.01 12:13 작성 조회수 108
0
요청한 email이 DB 정보 안에 email에 있을 때 user가 생성되는 건 알겠습니다. 그 뒤에 comparePassword 함수가 실행 되어서 plainPassword는 요청받은 req.body.password가 되는 것이고, 암호화된 'this.password' 는 어디서 받아오는 것인지 궁금합니다ㅠㅠ User.findOne()에서 이메일 찾은 후 그 사용자정보에 있는 password인건가요?
userSchema.methods.comparePassword = function (plainPassword, cb) {
//요쳥받은 비밀번호와 암호화된 비밀번호가 맞는지 확인
bcrypt.compare(plainPassword, this.password, function (err, isMatch) {
if (err) return cb(err);
cb(null, isMatch);
});
};
답변을 작성해보세요.
1
John Ahn
지식공유자2021.09.07
안녕하세요 이은지님 !
우선 console.log(this)해보시면 유저의 이름이나 이메일 비밀번호를 가져오는걸 볼수있습니다.
스키마를 이용해서 메소드를 만들어서 사용할때는 그안에서 this를 이용하면 이안에 스키마에 정의해준 컬럼의 값들이 나옵니다~!
User.findOne은 넵 !! 얘기하신대로 유저 객체를 데이터베이스에서 가져옵니다 !!!
수고하세요 ~!
답변 1