检索与最新消息、节点 js、套接字 io、mysql 聊天应用程序的对话
Retrieve the conversations with latest mesaage, node js, socket io, mysql chat application
我在构建聊天应用程序方面比较陌生。 Ionic、node js、socket io、mysql stack 用于构建一对一和群聊的聊天应用程序。对应的db schema中的table如下所示
会话及其 ID 在此设计中被视为线程。
当发件人在组中插入新消息时:
table 'messenger_threads' 填充新线程 ID(如果是组消息,则为组 ID),如果该组 ID 条目是新的,则填充主题,否则不插入任何内容。
当发件人在私人聊天中插入新消息时:
线程 id 是用来自客户端的相应发送者-接收者对生成的。 table 'messenger_threads' 填充了生成的线程 ID。如果与相同的发送者接收者对的对话在 table 中,则不会插入。
同样,在 table 'messenger_participants'
中填充相同 thread_id(保护 ID)的群组和私人聊天参与者
在table'messenger_messages'中,插入的新消息带有thread_id、消息正文和发件人ID(即[=58=中的user_id ])
所以在特定的conversation/thread(群组或私人聊天)
所有消息和发件人详细信息均可用。
在table'user_messages'中更新了消息id和关联用户的详细信息(发件人和收件人),以便更新每个用户的消息清除操作。
用户 ID 详细信息检索自 table 'users' table
用户
属性
1.id
2.username
3.other_details..
能否请您协助我查询检索具有最新消息信息的单个用户的所有对话,如 facebook messenger.Also 给我在数据库设计方面的建议。
select mthread.subject subject,message.last_message
from messenger_threads mthread,
(select mm.thread_id thread_id,mm.body last_message,max(mm.updated_at) max_date
from messenger_messages mm
group by mm.thread_id) message
where mthread.id in
(select thread_id from messenger_participants mpart where user_id in(?))
and message.thread_id=mthread.id
order by mthread.updated_at desc;
此查询应该可以满足您的需要,前提是可以对其应用性能调整以进一步改进它。欢迎提出改进此查询的建议。
我在构建聊天应用程序方面比较陌生。 Ionic、node js、socket io、mysql stack 用于构建一对一和群聊的聊天应用程序。对应的db schema中的table如下所示
会话及其 ID 在此设计中被视为线程。
当发件人在组中插入新消息时: table 'messenger_threads' 填充新线程 ID(如果是组消息,则为组 ID),如果该组 ID 条目是新的,则填充主题,否则不插入任何内容。 当发件人在私人聊天中插入新消息时: 线程 id 是用来自客户端的相应发送者-接收者对生成的。 table 'messenger_threads' 填充了生成的线程 ID。如果与相同的发送者接收者对的对话在 table 中,则不会插入。
同样,在 table 'messenger_participants'
中填充相同 thread_id(保护 ID)的群组和私人聊天参与者在table'messenger_messages'中,插入的新消息带有thread_id、消息正文和发件人ID(即[=58=中的user_id ]) 所以在特定的conversation/thread(群组或私人聊天) 所有消息和发件人详细信息均可用。
在table'user_messages'中更新了消息id和关联用户的详细信息(发件人和收件人),以便更新每个用户的消息清除操作。
用户 ID 详细信息检索自 table 'users' table
用户 属性 1.id 2.username 3.other_details..
能否请您协助我查询检索具有最新消息信息的单个用户的所有对话,如 facebook messenger.Also 给我在数据库设计方面的建议。
select mthread.subject subject,message.last_message
from messenger_threads mthread,
(select mm.thread_id thread_id,mm.body last_message,max(mm.updated_at) max_date
from messenger_messages mm
group by mm.thread_id) message
where mthread.id in
(select thread_id from messenger_participants mpart where user_id in(?))
and message.thread_id=mthread.id
order by mthread.updated_at desc;
此查询应该可以满足您的需要,前提是可以对其应用性能调整以进一步改进它。欢迎提出改进此查询的建议。