Мне нужно создать систему сообщений, где человек может общаться со многими пользователями.
Например, я начинаю говорить с user2, user3 и user4, так что любой из них может видеть весь разговор, и если разговор не является конфиденциальным в любой момент времени, любой из участников может добавить в разговор любого другого человека.
Вот моя идея, как это сделать.
Я использую Mongo, и моя идея состоит в том, чтобы использовать диалог в качестве экземпляра вместо сообщения.
Схема указана следующим образом:
{
_id : ...., // dialog Id
'private' : 0 // is the conversation private
'participants' : [1, 3, 5, 6], //people who are in the conversation
'msgs' :[
{
'mid' : ...// id of a message
'pid': 1, // person who wrote a message
'msg' : 'tafasd' //message
},
....
{
'mid' : ...// id of a message
'pid': 1, // person who wrote a message
'msg' : 'tafasd' //message
}
]
}
Я вижу некоторые плюсы для этого подхода
- в большой базе данных будет легко найти сообщения для определенного разговора.
- будет легко добавлять людей в разговор.
но вот проблема, для которой я не могу найти решение:
разговор становится слишком длинным (возьмите в качестве примера Skype), и они не показывают вам весь разговор, они показывают вам часть, а затем они показывают вам дополнительные сообщения.
В других ситуациях пропустить, лимит решает дело, но как я могу сделать это здесь?
Если это невозможно, какие у вас есть предложения?