【问题标题】:How to update one field from all documents using POJO in Firestore?如何在 Firestore 中使用 POJO 更新所有文档中的一个字段?
【发布时间】:2019-09-24 02:01:24
【问题描述】:

我有这个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???
            }
        }
    }
});

如何使用 POJO 将 active 更新为 false?谢谢!

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    您可以通过非常简单的方式解决此问题。除了 getter,您还应该为 active 属性创建一个 setter,如下所示:

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

    一旦你创建了setter,你可以像这样直接在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,并将更新后的对象设置在相应的引用上。

    【讨论】:

      猜你喜欢
      • 2022-11-25
      • 2020-11-28
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      相关资源
      最近更新 更多