TIL 20.12.22

12/22 TIL

MongoDBb __v field

MongoDB의 ORM(명확히 얘기하자면 ODM)인 mongoose를 사용하다보면 __v 라는 의문의 field가 생기는 것을 확인할 수 있습니다.

Mongoose 공식문서에서는 이를 versionKey라고 합니다. 이 key값은 해당 다큐먼트의 내부 수정에 대한 정보를 담고 있다고 합니다. 즉, Document 버전관리를 해주는 필드입니다. 오직 .save() 를 사용해서 document를 업데이트 할때만 versionKey가 업데이트 된다고 합니다. (update(), findOneAndUpdate()를 사용하면 업데이트가 되지 않는다고 합니다. 크게 다른 설정을 하지 않는 이상 default값은 0입니다.

__v 필드를 다른 의미로 사용하기 위해 mongoose에 {versionKey:false} 옵션을 줘서 mongoose가 자동으로 __v 필드를 생성하지 못하게 할 수도 있습니다.

Passport Strategy

alias를 통해서 같은 passport strategy를 다르게 활용할 수 있습니다.

app.use('jwt', JwtStrategy);
app.use('adminJwt', AdminJwtStrategy)

요렇게 하면 jwt authenticate할때 관리자인증이 필요한 로직에는

router.get('/', authenticate('adminJwt'))

일반 유저 인증에는

router.get('/', authenticate('jwt'))

이렇게 분기할 수 있습니다.

좋은 웹페이지 즐겨찾기