Мне нужно создать систему сообщений, в которой человек может общаться со многими пользователями. Например, я начинаю говорить с пользователем2, пользователем3 и пользователем4, так что любой из них может видеть весь разговор, и если разговор не приватный в любой момент времени любой из участников может добавить любого другого человека в разговор.
Вот моя идея, как это сделать. Я использую 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), и они не показывают вам весь разговор, они показывают вам часть, а затем показывают вам дополнительные сообщения. В других ситуациях пропуск, ограничение решает дело, но как я могу сделать это здесь?
Если это невозможно, какие у вас есть предложения?