Как обновить одно поле из всех документов, используя POJO в Firestore? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть Student класс POJO:

public class Student {
    private String name, rollNumber;
    private boolean active;

    public Student() {
        //For Firebase
    }

    public Student(String name, String rollNumber, boolean active) {
        this.name = name;
        this.rollNumber = rollNumber;
        this.active = active;
    }

    public String getName() {
        return name;
    }

    public String getRollNumber() {
        return rollNumber;
    }

    public boolean isActive() {
        return active;
    }
}

Это моя база данных:

student-xxxxx
   -students
       -uid
         - name
         - rollNumber
         - active

Есть 100 студентов, некоторые активны, а некоторые нет. Я хочу, чтобы все студенты не были активными.

Код:

db.collection("students").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (DocumentSnapshot document : task.getResult()) {
                Student student = document.toObject(Student.class);
                // How to update???
            }
        }
    }
});

Как обновить active до false, используя POJO? Спасибо!

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете решить это очень простым способом. Помимо геттера, вы также должны создать сеттер для вашего свойства active, например:

public void setActive(boolean active) {
    this.active = active;
}

После того, как вы создали сеттер, вы можете использовать его прямо на вашем student объекте, например так:

db.collection("students").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (DocumentSnapshot document : task.getResult()) {
                Student student = document.toObject(Student.class);
                student.setActive(false); //Use the setter
                String id = document.getId();
                db.collection("students").document(id).set(student); //Set student object
            }
        }
    }
});

Результатом этого кода будет обновление активного свойства всех объектов вашего студента на false и установка обновленного объекта прямо на соответствующую ссылку.

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