MongoDB의 ORM(명확히 얘기하자면 ODM)인 mongoose를 사용하다보면 __v
라는 의문의 field가 생기는 것을 확인할 수 있습니다.
Mongoose 공식문서에서는 이를 versionKey
라고 합니다. 이 key값은 해당 다큐먼트의 내부 수정에 대한 정보를 담고 있다고 합니다. 즉, Document 버전관리를 해주는 필드입니다. 오직 .save()
를 사용해서 document를 업데이트 할때만 versionKey가 업데이트 된다고 합니다. (update()
, findOneAndUpdate()
를 사용하면 업데이트가 되지 않는다고 합니다. 크게 다른 설정을 하지 않는 이상 default값은 0입니다.
__v
필드를 다른 의미로 사용하기 위해 mongoose에 {versionKey:false}
옵션을 줘서 mongoose가 자동으로 __v
필드를 생성하지 못하게 할 수도 있습니다.
alias를 통해서 같은 passport strategy를 다르게 활용할 수 있습니다.
app.use('jwt', JwtStrategy);
app.use('adminJwt', AdminJwtStrategy)
요렇게 하면 jwt authenticate할때 관리자인증이 필요한 로직에는
router.get('/', authenticate('adminJwt'))
일반 유저 인증에는
router.get('/', authenticate('jwt'))
이렇게 분기할 수 있습니다.