2017-03-29 27 views
0

生成的週期性事件中我正在構建一個允許用戶創建週期性事件的日曆應用程序。如何將數據(註釋,受讓人)存儲到使用RRULE

不是爲每一個反覆出現的事件創建MongoDB中一個新的對象,我創建與連接到它的重複規則的單個事件對象。

然後在客戶端上我是「擴大」復發規則的事件,因此他們都顯示在日曆中的每次復發創建臨時對象。

這所有作品真的很好,我的防止從DB任何時候的事件經常復發填充了上百個對象。我的問題是:我如何才能針對每個重複事件存儲數據?例如,玩Google日曆我可以創建一個週期性事件,然後爲每個重複添加「註釋」。筆記可以添加到單個事件或所有事件。

我的想法至今都當用戶想加「註釋」,添加一個EXDATE用戶正在編輯的復發,然後爲它創建一個新的獨立事件對象。

我不知道這是接近這雖然最好的辦法。建議非常感謝。

回答

1

以iCalendar表示,這樣的異常模型的正確方法的方面是有它是同一事件(同一UID)的一部分,與附加RECURRENCE-ID參數。你不應該添加一個EXDATE:

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可能不同(例如,如果上一個實例從9日至10移動事件的時間,復發-ID將是T090000,而DTSTART將有T100000。

參見https://tools.ietf.org/html/rfc5546#section-4.4.2

相關問題