# #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.