Почему я получаю 2 набора детей, когда я использую setAsyncValue? - PullRequest
0 голосов
/ 10 января 2019

Я не уверен, почему 2 ребенка создаются / обновляются при использовании setValueAsync. Может быть, кто-то может помочь мне понять, что я делаю неправильно.

Изначально я настраивал вручную под узлом Employee некоторые дочерние элементы (имя и пароль). Сейчас я пытаюсь создать процесс, чтобы иметь возможность обновлять их из приложения в Java. По неизвестной причине создаются / обновляются 2 набора детей (appPassword, name, password, technicianName). даже если я удаляю какие-либо из наборов, они добавляются автоматически, когда я выполняю setValueAsync.

вот мой класс:

package com.mycompany.spring.model;

public class TechShort {
    public boolean active;
    public String name;
    public String password;

public TechShort(boolean active, String name, String password) {
    this.active;
    this.name = name;
    this.password = password;
}

public boolean getActive() {return this.active;}
public void setActive(boolean active) {this.active = active;} 
public String getTechnicianName() {return this.name;}
public void setTechnicianName(String name) {this.name = name;}     
public String getAppPassword() {return this.password;}
public void setAppPassword(String password) {this.password = password;}     
}

и вот как я загружаю базу данных firebase:

Map<String, TechShort> techs;
techs = new HashMap<>();
techs.put((String.valueOf(i+1)),
       new  TechShort(Boolean.valueOf(model.getValueAt(i,6).toString()),
                                name1,password1));

 FirebaseDatabase firedb = FirebaseDatabase.getInstance();
                    DatabaseReference db = firedb.getReference().child("Employees");
                    db.setValueAsync(techs);

так что все работает и дочерние элементы создаются, но они дублируются, и я ожидаю, что под узлом будет только 3 дочерних элемента ( пример активный: правда пароль: 1123223 имя: джордж

вместо этого у меня есть: активный: правда appPassword: 1123223 имя: джордж пароль: 1123223 техникИмя: джордж

Если я изменю одно из значений (например, 1123223 на другое, обновятся appPassword и пароль. Надеюсь, кто-нибудь может помочь / помочь мне понять, как решить эту проблему.

1 Ответ

0 голосов
/ 11 января 2019

как только я изменил методы получения / установки с:

public boolean getActive() {return this.active;}
public void setActive(boolean active) {this.active = active;} 
public String getTechnicianName() {return this.name;}
public void setTechnicianName(String name) {this.name = name;}     
public String getAppPassword() {return this.password;}
public void setAppPassword(String password) {this.password = password;}

до

public boolean getActive() {return this.active;}
public void setActive(boolean active) {this.active = active;} 
public String getName() {return this.name;}
public void setName(String name) {this.name = name;}     
public String getPassword() {return this.password;}
public void setPassword(String password) {this.password = password;}  

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

...