좋은 강의 감사합니다. 덕분에 즐겁게 프로젝트 진행하고 있습니다.
진행중에 제가 생각하는 방향이 잘못된건가 싶어서 질문 올립니다.
로그인한 유저가 게시물에 좋아요를 누를 수 있고, 마이페이지에서 본인이 좋아요 누른 게시물만 볼 수 있는 기능을 만드려고 합니다.
카카오 로그인을 db에 session 저장하는 방식으로 구현했고 로그인은 잘 됩니다.
강의 내용처럼 한 명의 user여도 account가 여러 개일 수 있기에 당연히 account별로 좋아요 누른 게시물을 저장해야 한다고 생각했습니다.
유저가 좋아요 누른 게시물을 저장하는 데이터를 mongodb에
{
_id: ObjectId()
account_id: ObjectId() // accounts document의 _id
like_list: [ ObjectId(), ... ] // 이 계정이 좋아요 누른 게시물들의 _id
}
이런 document로 만드려고 했습니다.
그래서 몽고db의 accounts collection에서 _id를 가져오려고 했습니다.
useSession()같은 걸로 session 정보를 받아와도 {name, email, image}만 보내주고 보안을 이유로 _id같은 건 들어있지 않더라구요.
찾아보니 [...nextauth.js] 파일에서 callbacks에 여러 함수를 정의해서 user나 account 정보를 구할 수 있는 것까진 알았습니다.
그런데 출력해보니 user같은 경우에는 document의 _id까지 주는데 account(callbacks중 async signIn()에서 구할 수 있는)에서는 _id만 빼고 주더라구요.
user.id와 account.provider를 이용해 db에서 검색해서 account의 _id를 구할 수 있을 것 같긴 합니다.
그런데 이쯤되니
'account의 id를 이렇게까지 안주는 건 내가 생각하지 못하는 이유가 있지 않을까' 라는 생각이 듭니다.
제가 생각하는 account.id를 사용하는 방법이 일반적으로 사용하지 않는 방법인가요?
아니면 user.id와 account.provider로 꾸역꾸역 account의 _id를 구해야 하나요?
그리고 애초에 jwt가 아니라 db를 사용할 때 account정보는 useSession같은 걸로 session확인할 때 얻을 수 있는 방법이 없는 것 같은데
account 정보를 사용하고 싶으면 callbacks의 signIn()에서 처음 로그인 했을 때 account를 구해와 어딘가에 저장해두어야 하는 건가요?