Как установить true для списка данных в моей базе данных Firebase - PullRequest
0 голосов
/ 01 декабря 2018

В настоящее время я получаю массив (тип String) от моего адаптера, который выполняет некоторую логику выбора.

Теперь я хочу передать эти значения в мою базу данных Firebase, которая работает нормально, но этомой, как это

enter image description here

Вместо этого мне нужно, чтобы это было толкать вот так

USERID1 : true;
USERID2 : true;
...

мой код

mDatabase.child("myawesomenode").child(teamID).setValue(mAdapter.getSelectionList());

Я пытался сделать карту таким образом

Map<String,Object> map = new HashMap<>();
map.put(mAdapter.getSelectionList().toString(),true);

и установить данные с помощью updateChildren(), но даже не отправляет данные.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Решил это следующим образом

Map<String,Object> map = new HashMap<>();
 for (int i = 0; i < mAdapter.getSelectedDataArray().size(); i++) {
                map.put(mAdapter.getSelectedDataArray().get(i),true);

mDatabase.child("myawesomenode").child(teamID).updateChildren(map);

}
0 голосов
/ 01 декабря 2018

Похоже, у вас есть Collection, называемый "myawesomenode", и вы пытаетесь создать Document внутри этого Collection с идентификатором, равным teamID.Внутри этого Document вы хотите, чтобы список или карта «UserIds» были связаны с логическим значением.

Лично я думаю, что проще использовать POJO при выполнении транзакций базы данных Firebase.Вы можете создать объект «Команда» (или как вы хотите его назвать), и внутри этого объекта вы можете иметь, например, переменную HashMap<String, Boolean> с именем «teamStatus».Затем вы можете просто внести изменение в карту «teamStatus» через документ «Team», выбранный по значению teamID, чтобы просто изменить «userStatus» HashMap по мере необходимости.Вы можете вручную управлять всей картой.

class Team {
    public Map<String, Boolean> teamStatus;
}

myawesomenode
  - <thatTeamIDValue>
    - teamStatus
      -<key0>:<value0>
      -<key1>:<value1>

В качестве альтернативы вы можете сделать что-то вроде этого:

class Team {
    public List<MemberStatus> memberStatusList;
    public String someOtherString;
}

class MemberStatus {
    public String id;
    public boolean isRegistered;
    public String name;
    /// other things
}

myawesomenode
  - <thatTeamIDValue>
    - memberStatusList
      - 0
        - id:<idValue>
        - isRegistered:true
        - name:DaName  
      - 1
        - id:<idValue>
        - isRegistered:false
        - name:DaOtherName  
    -someOtherString:SomeOtherValue

... и тогда вы можете просто запросить эту структуру вместо.

Это на самом деле о том, как вы хотите структурировать базу данных no-sql.Взгляните на некоторую документацию по Firebase no-sql, и она даст вам лучшее представление о том, как структурировать ваши данные в соответствии с вашими потребностями.

Редактировать: Стиль POJO также позволяет вам легко отправлять данныедля обновления и преобразования строкового ответа JSON непосредственно в удобную форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...