代码之家  ›  专栏  ›  技术社区  ›  sdot257

MongoDB:私人消息系统…如何跟踪发送的消息

  •  0
  • sdot257  · 技术社区  · 16 年前

    现在,每条消息都有一个“接收者”和“发送者”。一开始,我以为我可以通过查询查看发送者是谁,从而在用户的“已发送”选项卡中显示消息。但是,艾米可能想删除这个消息,然后呢?我不想把这封信扔掉,因为不管出于什么原因,鲍勃可能还是想把它放在他发送的档案里。

    我唯一能想到的另一个选择是把信息保存两次,这很愚蠢,而且可能失控。

    3 回复  |  直到 16 年前
        1
  •  0
  •   Gates VP    16 年前

    我唯一能想到的另一个选择是把信息保存两次,这很愚蠢,而且可能失控。

    鲍勃的“已发送文件夹”中也有一份他的邮件副本

    好吧,那么鲍勃 对于这个消息,这个“副本”应该是数据库中的另一个文档。

        2
  •  1
  •   Roman    14 年前

    好吧,现在很晚了,但只针对那些迟到的读者:我认为最好在每条消息中添加两个字段:

    inbox (default = 1)
    outbox (default = 1)
    

    当收件人删除其邮件时,收件箱变为=0

    当发件人删除他的邮件时,发件箱变为=0

    如果inbox=0,outbox=0,则可以从DB中删除邮件。

    另外,添加一个名为“new”=1/0的字段也很好—它显示收件人是否已阅读邮件。

        3
  •  0
  •   Brenton Alker    16 年前

    1. 保存邮件的两个副本。这似乎是一种浪费,但效果很好,特别是当您需要在多个服务器上进行切分时——所有用户的详细信息都存储在一起(注意:这就是电子邮件的工作原理(一个非常分散的模型)

    2. 如前所述,与发送者/接收者保存一份副本,但将删除功能设为“软”删除,即将邮件标记为已删除,而不是实际删除。如果您希望发送方和接收方能够独立地删除消息,这可能需要两个标志。

    推荐文章