Структура данных Firebase для одного приложения чата или частного - PullRequest
1 голос
/ 30 апреля 2020

В настоящее время я занимаюсь разработкой веб-приложений, где мне нужно добавить функциональность чата. Пользователь опубликовал sh свой продукт, а другой заинтересованный пользователь может пообщаться с продавцом, чтобы остаться или узнать более подробную информацию о продукте.

Я застрял на имплантации чата, я не могу найти подходящие данные структура для необходимости. Моя потребность скажем, Джон является продавцом и опубликовал свой телефон на продажу. Чарльз заинтересовался телефоном Джона, и он хочет узнать больше об этом, так что начните общаться с Джоном. Они не знают друг друга до чата, не как в WhatsApp. Где пользователь знает другого пользователя, прежде чем отправить сообщение. Джон мог бы опубликовать так много продуктов, а Чарльз мог бы заинтересоваться различными его продуктами, потому что каждый продукт будет создавать новую беседу (чат).

Я хочу, чтобы, если Джон удалит сообщение, то это должно было бы удалить из его чат не от Чарльза.

Чат приватный или один на один.

До сих пор я делал эту структуру данных. Я не знаю, если это лучший способ? пожалуйста, предложите мне

chats
    sender_ID _ Reciever_id
        product_id
            message:''
            Timestamp:''
            SenderName:''

1 Ответ

2 голосов
/ 30 апреля 2020

Когда пользователь публикует продукт (потенциальный продавец), вам необходимо связать его идентификатор пользователя с этим продуктом. Исходя из этого, заинтересованный пользователь (потенциальный покупатель) может установить соединение.

Учитывая ваши другие требования, я вложил бы чаты:

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
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...