Android удаление узлов приложения голосования, когда узел firebase пуст - PullRequest
1 голос
/ 25 марта 2020

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

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

Если вы посмотрите ниже, вы увидите, что Будапешт и Амстердам изначально имеют по 1 голосу каждый. Если мой исходный голос был за Будапешт, и я решил изменить его на Краков, мой идентификатор пользователя удаляется из узла Будапешта и добавляется в узел Кракова, и в результате Будапешт удаляется и удаляется из списка, так как под ним нет значений, хранящихся под ним. , Это также вызывает исключение индекса за пределами границ.

Я ищу способ обойти это, где в принципе я могу предотвратить удаление параметров опроса из-за отсутствия голосов. Надеюсь, это понятно. Буду признателен за любую помощь или предложения.

enter image description here

enter image description here

1 Ответ

0 голосов
/ 25 марта 2020

В базе данных это ожидаемое поведение: ключ существует, только если под ним есть значение. Как только последнее значение в ключе удаляется, этот ключ также автоматически удаляется.

Нет способа изменить это поведение в базе данных, поэтому вам придется:

  • Либо иметь дело с этим в вашем коде, обрабатывая отсутствие данных. Это работает, только если вы знаете имена узлов заранее.
  • В противном случае вам необходимо убедиться, что узлы всегда имеют значение, чтобы предотвратить их удаление. Это может быть простое значение маркера (т. Е. true), которое ваш код распознает как «голосов нет», или вы можете располагать опции в отдельном месте как значения узла и сохранять сами голоса, как у вас сейчас.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...