Удаление сообщений в базе данных firebase в реальном времени react native

# #firebase #react-native #firebase-realtime-database

Вопрос:

Я пытаюсь разрешить пользователю в моем приложении удалять сообщения один к одному с помощью базы данных firebase в реальном времени, но не знаю, как это реализовать. Я думал, что мог бы использовать database().ref( messages/${key_name} ).remove(); но это приведет к удалению сообщений для обоих пользователей в базе данных, даже если другой пользователь не удалил сообщения. Другой пользователь должен иметь возможность по-прежнему видеть сообщения, если они не были удалены со своей стороны. Знаете ли вы, как я могу этого добиться? Я просмотрел другие ссылки, но, похоже, ничего не нашел по этому поводу. Ниже приведена структура сообщений:

введите описание изображения здесь

введите описание изображения здесь

Ответ №1:

Одним из способов достижения этой цели является:

Добавьте 2 свойства senderDeleted: false и receiverDeleted: false к каждому сообщению. Если отправитель удаляет сообщение, включите senderDeleted: true . Если senderDeleted: true , не показывайте сообщение отправителю. То же самое для получателя, разделенного.

Ответ №2:

Обычно я предпочитаю моделировать свою базу данных, чтобы точно отражать то, что пользователь видит в приложении. Поэтому, если каждый пользователь может видеть разные представления одного и того же разговора, я бы рассмотрел возможность создания отдельных копий разговоров для каждого из них. При такой структуре данных удаление сообщения от одного пользователя не приведет к автоматическому удалению его от любого другого пользователя(пользователей).

Этот тип дублирования данных довольно распространен в базах данных NoSQL. Если вы новичок в этом, я рекомендую ознакомиться с моделированием данных NoSQL и посмотреть Firebase для разработчиков SQL.