2013-06-28 2 views
0

유성 앱의 일부로 대화방을 가지고 있고 각 대화방 안에는 다른 모든 대화방에있는 사용자의 수뿐만 아니라 대화방에 누가 있는지도 볼 수 있어야합니다.Meteor에 공용 사용자 상태를 저장하는 위치는 어디입니까?

각 사용자의 대화방은 어디에 저장해야합니까? 제공된 Meteor.users 컬렉션에 각 사용자의 속성으로

  • 이어야합니까?
  • Chatrooms 컬렉션에있는
  • 을 각 대화방 내의 사용자 목록으로 사용 하시겠습니까?
  • 데이터를 비정규 화하는 올바른 방법으로 사용자가 모든 채팅 기록을 푸시하지 않고도 다른 채팅방에있는 사람들의 수를 볼 수 있습니다. ChatroomParticipants 같은 사용자 ID 및 객실의 문서를 포함하는 분리 수거 반대로 내가 Meteor.users()에서 일을 저장해야합니다 :

이와 관련된 질문? 즉 : 또한

{ user: "foo", room: "room 1" } 
{ user: "bar", room: "room 2" } 

, 사용자가 여러 개의 창에서 같은 응용 프로그램에 로그인하고 다른 방에있을 수 있도록이를 설정하는 방법은 무엇입니까? 즉, 특정 사용자에 대한 렌더링은 세션 전체에서 모든 것을 변경하는 일부 전역 상태에 의존하지 않습니다.

답변

0

이 경우 Meteor.users 문서에 써야합니다. 하나의 문서에서만 읽기/쓰기를 중앙 집중화하지 않을수록 병목 현상이 적어집니다. meteor-presence이 고급 사용법에 대해 알아보십시오.

+1

하나의 문서를 중앙화하는 것이 왜 더 나쁜지에 대한 참고 자료를 제공해 줄 수 있습니까? –

+0

또한 'Meteor.users'와 사용자 및 해당 채팅방의 기록을 담고있는 'ChatroomParticipants' 콜렉션을 사용하는 데는 어떤 차이가 있습니까? –

+0

GAE Datastore (확장 가능한 NoSQL)에서 블로그를 수행하는 방법을 설명하는 Google 비디오/슬라이드를 한 번 보았지만 찾을 수 없습니다. 두 번째 질문은 두 가지를 모두 할 수 있지만 필요가 없다는 것입니다. 여러 컬렉션을 가지고 있기 때문에 어디에서 물건을 찾을지를 아는 것이 더 어려울 것입니다. 앞으로 사용자를 위해 2 가지 속성을 더 가질 수 있다고 상상해보십시오. 더 많은 별도의 컬렉션을 만들 계획입니까? 이것이 여기에 설명하는 방법을 모르기 때문에 이것이 이해되기를 바랍니다. – gabrielhpugliese

관련 문제