【问题标题】:Deleting a conversation and sending a message to same conversation删除对话并向同一对话发送消息
【发布时间】:2014-03-10 17:24:01
【问题描述】:

我正在创建一个包含对话和消息的消息传递应用程序。每个对话都有一系列消息。

如果用户 1 删除了与用户 2 的对话,我的对话表中有一个名为 deleted_users 的字段,其中包含已删除对话的用户数组。因此,用户 2 仍会看到对话,但用户 1 不会。

问题:如果用户 2 决定通过相同的对话向用户 1 发送消息(用户 1 已删除但用户 2 仍有消息),该怎么办?在我看来,此消息应该为用户 1 创建一个全新的对话,但仍属于用户 2 的原始对话。处理此问题的最佳方法是什么?

我正在使用 Parse.com 来保存数据。我认为他们使用 Mongo...

【问题讨论】:

  • 请,不要将对象数组放入单个表字段中。这是使用 SQL 的地狱(并且违反了第一范式)。使用junction table
  • @sleske 我正在使用 Parse.com,所以他们会为我处理这个功能。我认为他们使用 Mongo...
  • @A 用户:谢谢,这是很重要的信息。我将其编辑到问题中。

标签: database-design


【解决方案1】:

本着 KISS 原则的精神,为什么不直接“复活”对话呢?

用户可能会删除对话,因为他们认为对话已经结束。现在有了回复,他们可能想再次看到对话。 为避免混淆,您可能需要显示一些标记/通知(“已删除对话,因回复而未删除。”)。

然后您可以尝试获取用户反馈。在此基础上,进一步细化(例如,有一个按钮来拒绝更多消息)。

我知道的大多数消息传递应用程序都是这样工作的。如果他们有“对话”的概念(不是所有人都有),通常对话只是一个新窗口。您可以关闭窗口,但如果有新消息进入,它会重新打开,并显示所有旧消息。


您可能还想考虑一下“删除”对话意味着什么。为什么用户会想要那个?仅“关闭”或“隐藏”对话有什么区别?这应该可以帮助您弄清楚当消息进入“已删除”对话时,正确的行为是什么。

【讨论】:

  • 感谢您的建议,这很有帮助。但是,在一个用户“永久删除”对话(Facebook 这样做)的情况下,我将如何创建一种有效的方法来仅从某个点下载消息?我会在我的对话表中创建另一个字段,其中包含与用户删除相关的日期吗?
  • 你看到上面的评论了吗?
  • @Auser:是的,您的建议应该可行。要真正回答,我们需要有关您所考虑的桌子设计的更多详细信息。编辑您的答案并指出您不确定的确切位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多