用于删除消息的聊天模式设计
Chat schema Design for deleting messages
我正在为约会应用程序制作聊天服务,我需要为其设计架构。我的堆栈是平均的。使用 socket.js 进行实时通信。我必须像 whatsapp 一样设计我的聊天应用程序。就像我需要 whatsapp 临时(一侧删除)和永久删除(两侧删除,然后它也会从内存中删除)。问题是我应该如何实现这个?
因为我的应用程序始终是一对一的聊天。我在想使用键“操作”作为删除功能,默认为空。
如果一个用户(假设 user1)从其一侧删除一条消息,那么我会将其标记为“DELETED/user1”。然后在获取消息时。我不会将此消息发送给该用户。
如果该消息也被其他用户删除或像 uuser1 的 whatsapp 一样被删除为“DELETE FOR ALL”,那么我将把字段标记为“DELETED/ALL”。
我的另一个想法是维护 2 个真相来源。
比如为每个用户维护两条相同对话的记录。
如果用户 1 删除,那么它将从用户 1 的对话中删除消息。
如果用户2删除,那么它会从用户2的对话中删除消息。
如果用户 1 删除为“DELETE FOR ALL”,那么它将从两个对话中删除消息。
这种方法的问题是,将来我必须执行两次操作,比如喜欢味精、编辑味精等
你对这个问题有什么建议?
提前致谢!
由于您的聊天是1 on 1而不是群聊,因此建议在这种情况下使用多字段。
如果用户 1 是 from
并且他删除了消息,则数据会像
fromDelete: true
toDelete: false
如果用户 2 是 to
并且他删除了消息,则数据会像
fromDelete: false
toDelete: true
如果用户 1 是 to
并且他删除了 所有 条消息,数据将是
fromDelete: true
toDelete: true
这样,您可以更轻松地修改或查询数据。
以后如果要加edit
或者like
也可以用这个方法
我正在为约会应用程序制作聊天服务,我需要为其设计架构。我的堆栈是平均的。使用 socket.js 进行实时通信。我必须像 whatsapp 一样设计我的聊天应用程序。就像我需要 whatsapp 临时(一侧删除)和永久删除(两侧删除,然后它也会从内存中删除)。问题是我应该如何实现这个?
因为我的应用程序始终是一对一的聊天。我在想使用键“操作”作为删除功能,默认为空。
如果一个用户(假设 user1)从其一侧删除一条消息,那么我会将其标记为“DELETED/user1”。然后在获取消息时。我不会将此消息发送给该用户。 如果该消息也被其他用户删除或像 uuser1 的 whatsapp 一样被删除为“DELETE FOR ALL”,那么我将把字段标记为“DELETED/ALL”。
我的另一个想法是维护 2 个真相来源。 比如为每个用户维护两条相同对话的记录。
如果用户 1 删除,那么它将从用户 1 的对话中删除消息。
如果用户2删除,那么它会从用户2的对话中删除消息。
如果用户 1 删除为“DELETE FOR ALL”,那么它将从两个对话中删除消息。 这种方法的问题是,将来我必须执行两次操作,比如喜欢味精、编辑味精等
你对这个问题有什么建议?
提前致谢!
由于您的聊天是1 on 1而不是群聊,因此建议在这种情况下使用多字段。
如果用户 1 是 from
并且他删除了消息,则数据会像
fromDelete: true
toDelete: false
如果用户 2 是 to
并且他删除了消息,则数据会像
fromDelete: false
toDelete: true
如果用户 1 是 to
并且他删除了 所有 条消息,数据将是
fromDelete: true
toDelete: true
这样,您可以更轻松地修改或查询数据。
以后如果要加edit
或者like