Когда пользователь публикует продукт (потенциальный продавец), вам необходимо связать его идентификатор пользователя с этим продуктом. Исходя из этого, заинтересованный пользователь (потенциальный покупатель) может установить соединение.
Учитывая ваши другие требования, я вложил бы чаты:
chats: {
uid1_uid2_productid: {
pushid: { message: ..., timestamp: ..., sender: ... },
pushid: { message: ..., timestamp: ..., sender: ... }
}
}
И затем связал бы эти чаты с правильные пользователи в пользовательских списках c:
user_chats: {
uid1: {
uid1_uid2_productid: true
},
uid2: {
uid1_uid2_productid: true
}
}
Вместо true
вы также можете сохранить значение (или несколько свойств), которое поможет вам отобразить список чатов для этого конкретного c user.
Если вы хотите, чтобы у каждого пользователя была совершенно отдельная копия чата / комнаты, самый простой способ - дублировать комнаты. Итак:
chats: {
uid1_uid2_productid: {
pushid: { message: ..., timestamp: ..., sender: ... },
pushid: { message: ..., timestamp: ..., sender: ... }
}
uid2_uid1_productid: {
pushid: { message: ..., timestamp: ..., sender: ... },
pushid: { message: ..., timestamp: ..., sender: ... }
}
}
А потом:
user_chats: {
uid1: {
uid1_uid2_productid: true
},
uid2: {
uid2_uid1_productid: true
}
}