【问题标题】:How to store data (notes, assignees) to recurring events generated using RRULE如何将数据(注释、受让人)存储到使用 RRULE 生成的重复事件
【发布时间】:2017-08-23 03:00:21
【问题描述】:

我正在构建一个允许用户创建重复事件的日历应用程序。

我没有在 MongoDB 中为每个重复事件创建一个新对象,而是创建一个附加了重复规则的单个事件对象。

然后在客户端上,我正在“扩展”重复规则,以便为事件的每次重复创建临时对象,以便它们都显示在日历中。

这一切都很好,并且可以防止我的数据库在事件频繁发生时填满数百个对象。我的问题是:我如何才能针对每个重复事件存储数据?例如,使用 Google 日历我可以创建一个循环事件,然后为每个循环添加“注释”。注释可以添加到单个事件或所有事件中。

到目前为止,我的想法是当用户想要添加“注释”时,为用户正在编辑的重复添加 EXDATE,然后为其创建一个新的独立事件对象。

我不确定这是否是解决此问题的最佳方法。非常感谢您的建议。

【问题讨论】:

    标签: database-design calendar icalendar rrule


    【解决方案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
    

    请注意,异常的 RECURRENCE-ID 应始终对应于从 RRULE 计算的日期时间,而异常的 DTSTART 可能不同(例如,如果在一个实例中,您将事件的时间从 9 移动到 10 ,RECURRENCE-ID 将为 T090000,而 DTSTART 将具有 T100000。

    另见https://www.rfc-editor.org/rfc/rfc5546#section-4.4.2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2016-05-18
      • 1970-01-01
      相关资源
      最近更新 更多