강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

송지훈님의 프로필 이미지
송지훈

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

backend강의를 다보고 나서 질문드립니다.

작성

·

142

0

강의는 잘 봤는데요.

궁금한게 있어서 질문드릴게용

userSchema.methods.generateToken = function (cb) {
  let user = this;
  // jsonwebtoken을 이용해서 token을 생성하기
  let token = jwt.sign(user._id.toHexString(), "secretToken");
여기서 갑자기 user._id가 나왓는데 user._id는 userSchema에 없는데
user._id에 대해서 설명해 줄 수 있나요?
  /*
  user._id + 'secretToken' = token
  => 'secretToken' => user._id
  */
  user.token = token;
  user.save(function (erruser) {
    if (errreturn cb(err);
    cb(nulluser);
  });
};
//그리고 여기서는 statics를 쓰셧는데
// methods를 쓰다가 갑자기 static를 쓰신 이유도 궁금합니다.
// 알긴 알겠는데 선생님의 의견이 궁금해서요
userSchema.statics.findByToken = function (tokencb) {
  let user = this;

  // 토큰을 decode 한다.
  jwt.verify(token"secretToken"function (errdecoded) {
    // 유저 아이디를 이용해서 유저를 찾은 다음에
    // 클라이언트에서 가져온 token과 DB에 보관된 토큰이 일치하는지 확인
    user.findOne({ _id: decodedtoken: token }, function (erruser) {
      if (errreturn cb(err);
      cb(nulluser);
    });
  });
};

답변 1

1

John Ahn님의 프로필 이미지
John Ahn
지식공유자

user._id 는     _id 이 아이디는  스키마에 정의해주지 않아도 자동생성되기 때문에 user._id로 사용이 가능합니다 ~ ! 

그리고 몽고 db 에서  method와  static의 차이는 많이 헤깔리는 부분인데  
개인적으로 여기에서 해주는 설명이 가장 이해가 잘되는것 같습니다 ~ ! 
https://stackoverflow.com/questions/29664499/mongoose-static-methods-vs-instance-methods
수고하세요 ^^  

송지훈님의 프로필 이미지
송지훈

작성한 질문수

질문하기