• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

몽고디비에서의 다대다 관계

19.05.03 15:32 작성 조회수 214

0

몽고디비에서 user와 post의 관계를 1:N으로 설정하고 싶어서 user와 post의 스키마안에 다음과 같이 작성을 했습니다. 그런데 로그인하고 글을 작성한 후 compass를 확인해보니 컬럼이 추가되지 않습니다. 어떤 부분이 빠졌는지 알려주시면 감사하겠습니다. 그리고 로그인 상태로 nodemon을 사용중인데 저장을 할 때 마다 로그인이 풀리는 것 같습니다. 다른 이유일수도 있는데 작업을 하다보면 1~2분 후에도 계속해서 로그인이 풀리고 있는데 해당 챕터의 serealize와 deserealize까지 구현을 했다면 세션에 로그인 정보가 저장되는 것인가요? 관리자 도구를 통해 로그인을 수행할때마다 sid가 생성되는 것을 볼 수 있었는데 왜 계속 유지가 되지 않고 로그아웃이 되는지 궁금합니다.

// post schema
  user: {
    type: mongoose.Schema.Types.ObjectId,
    require: true,
    ref: 'User',
  }

// user schema
  post: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Post'
  }

답변 1

답변을 작성해보세요.

0

몽고디비에는 다대다 관계가 없습니다. 흉내내는 것도 힘듭니다. 몽고디비에는 컬럼 개념도 없기 때문에 직접 데이터를 넣지 않는 한 컬럼(정확히는 필드)이 생기지 않습니다.

ref 자체가 몽고디비 기능이 아니라 몽구스가 임의로 추가해주는 기능입니다.

또한 기본적으로 세션이 서버 메모리에 저장되기 때문에 서버 재시작 시마다 로그인이 풀립니다. 서버 코드를 수정하면 노드몬이 서버를 재시작하고 로그인도 풀리게 됩니다.

이를 막기 위해서는 레디스같은 별도의 메모리 서버를 사용해야 합니다.