2017-03-29 17 views
0

사용자가 반복 이벤트를 만들 수있는 캘린더 응용 프로그램을 구축 중입니다.RRULE을 사용하여 생성 된 반복 이벤트에 데이터 (메모, 할당 된 사람)를 저장하는 방법

반복되는 각 이벤트에 대해 MongoDB에 새 개체를 만드는 대신, 반복 규칙이 첨부 된 단일 이벤트 개체를 만듭니다.

그런 다음 클라이언트에서 일정의 모든 되풀이에 대한 임시 개체를 만들기 위해 되풀이 규칙을 '확장'하므로 모든 일정에 표시됩니다.

모든 것이 잘 작동하고 이벤트가 자주 반복 될 때마다 내 DB가 수백 개의 개체로 채워지는 것을 방지합니다. 내 질문은 : 어떻게 각 반복 이벤트에 대해 데이터를 저장할 수 있습니까? 예를 들어, Google 캘린더로 놀아 가면서 반복 일정을 만들고 각 재발에 '메모'를 추가 할 수 있습니다. 노트는 단일 이벤트 또는 모든 이벤트에 추가 될 수 있습니다.

지금까지 사용자가 '메모'를 추가하고 사용자가 편집중인 반복에 대한 EXDATE를 추가 한 다음 새로운 독립 실행 형 이벤트 객체를 만들기를 원합니다.

이것이 최선의 방법인지는 확실하지 않습니다. 조언 많이 주셔서 감사합니다.

답변

1

iCalendar 표현과 관련하여 이러한 예외를 모델링하는 올바른 방법은 추가 RECURRENCE-ID 매개 변수와 함께 동일한 이벤트 (동일한 UID)의 일부분이되도록하는 것입니다. 당신은 EXDATE 추가 안 : 예외의 DTSTART이 다를 수 있습니다 동안

BEGIN:VEVENT 
UID:XXX 
DTSTART;TZID=zzz:20170401T090000 
RRULE:FREQ=DAILY 
... 
END:VEVENT 
BEGIN:VEVENT 
UID:XXX 
RECURRENCE-ID;TZID=zzz:20170405T090000 
DTSTART;TZID=zzz:20170405T090000 
... 
END:VEVENT 

가 (예외의 재발-ID는 항상 RRULE에서 계산 된 날짜와 일치해야합니다 있습니다를 예를 들어 하나 개의 인스턴스에있는 경우 DTSTART가 T100000있을 것입니다 동안 9 ~ 10에서 이벤트의 시간을 이동, 재발-ID는 T090000 될 것입니다.

도 참조 https://tools.ietf.org/html/rfc5546#section-4.4.2