2012-01-07 5 views
2

This article은 MongoDB를 사용하여 투표 시스템을 구현하는 방법을 매우 명확하게 설명하고 사용자 및 객체 당 하나의 투표를 제한합니다.MongoDB를 사용한 확장 가능한 투표 시스템

하나의 추가 요구 사항이 있습니다. 표시된 사용자의 투표가 표시되어야합니다. 예를 들어, 20 개의 트윗을 표시하고 사용자가 해당 트윗 중 3 개에 투표 한 경우 해당 투표를 표시해야합니다. 예를 들어, 녹색 위쪽 화살표를 사용하십시오.

한 가지 해결책은 각 질문에 대해 유권자 세트를 클라이언트에게 보내는 것입니다. 또 다른 해결책은 그가 던진 표를 클라이언트에게 보내는 것입니다. 어느 솔루션이 확장 가능한 것으로 보이지 않습니다. 어떤 제안?

+0

방금 ​​프로젝트의 몇 달 전에 구현 한이 데이터 모델을 원래 질문에 약간 기술하면 쿼리 작성을 도와 줄 것입니다. –

답변

1

채팅한다, 결국 비슷한 일이 필요합니다.

투표 칸과 유권자 배열이 포함 된 개체를 가지고 있으면 일련의 (스토리, 트윗)을 반복하면서 현재 사용자의 ID가 유권자 배열 내에 있는지 확인할 수 있습니다.)

의미가 있습니까?

+0

그래서 모든 물건에 대해 나는 모든 유권자에게 파이프를 보내야한다고 말하고 있습니다. 물체 당 유권자가 100 명이라면 어떻게 될까요? 이것은 대역폭의 낭비처럼 보입니다. – Randomblue

+0

그래, 다른 방법은 하나의 쿼리에서 트윗을 얻은 다음 현재 사용자가 사용하는 트윗 개체 ID 세트에 대해 다른 쿼리를 만드는 것입니다. 그런 다음 트윗 세트를 반복하면서 현재 트윗의 ID가 해당 트윗의 집합에 있는지 확인합니다. –

+0

예, 고마워요. 그것은 본질적으로 내가 끝내었던 것이다. – Randomblue

0

완전한 대답은 아니지만 루비/몽고 이드를위한 좋은 투표 라이브러리 (빠른 !!!)에 대한 링크입니다. node.js (아마도 mongoose)에 쉽게 이식 가능해야합니다.

https://github.com/vinova/voteable_mongo

나는 아마도 우리가 이렇게하면 클라이언트 측을 할 것입니다 뭔가 (내가는 Freenode에 Node.js를에 martin_sunset하고)

+0

감사합니다. 나는 루비에 대해 아무것도 모르지만, 한 번 봐야 할 것이다. – Randomblue

관련 문제