1

我发现了一些关于经常性事件的问题,但我还没有进入一个接近我需要的问题。我正在努力了解如何处理通知系统的重复事件。

到目前为止,我知道两种选择:

  1. 存储具有模式的单个事件并动态计算任何未来事件(例如永远重复等)。使用 cron 模式甚至更好的 RRULE 东西。

  2. 将所有未来事件存储为单个事件,直到某个日期。

我对选项 1 的问题是我需要我的事件来保存一些其他数据,例如确认,如果我有重复事件,我可能需要为每个重复事件保存多个确认。这变成了一个令人讨厌的黑客来使事情正常进行,我什至不想考虑如何处理显示与其他数据相关联的过去和未来事件。

选项 2 更好,因为即使在单个事件中我也可以存储与每个相关的所有额外数据。问题在于处理未来事件。首先,如果事件永远重复,那么我应该存储多少事件。如果用户想要显示尚未生成的未来事件,我是否只是做块并即时生成?这个选项也感觉像一个黑客。

到目前为止,我已经阅读了一些关于 RRULE 的内容,发现我可以将 rrule.js 用于前端,将其他一些包用于后端。

编辑 1:为了更好地澄清,我没有完全准备好使用完整的 iCal 格式标准,我想只使用 RRules。但是,我可能会改变主意,因为我仍在寻找选择。

iCal Vevents 和 rrules 应该如何存储在数据库中?

4

1 回答 1

2

目前尚不清楚您是否只关心 rrule 作为表达重复内容的便捷方式,或者您是否想使用完整的 iCalendar 格式。

假设后者,选项 1 包含在 RFC5545 中:您将存储一个“主”VEVENT,其中包含基本信息以及 RRULE,以及每个实例的一个 VEVENT,它是基本事件的“异常”,其中每个异常由其 RECURRENCE-ID 标识。

RFC5545 没有此类事件的任何示例,但 RFC5546 在https://www.rfc-editor.org/rfc/rfc5546#section-4.4.8有非常接近的内容(使用 RDATE 而不是 RRULE 并且不需要 METHOD 属性但你明白了)。

于 2016-02-09T12:41:12.613 回答