繁体   English   中英

如何在Firestore中使用POJO更新所有文档中的一个字段?

[英]How to update one field from all documents using POJO in Firestore?

我有这个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? 谢谢!

您可以通过非常简单的方式解决此问题。 除了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
            }
        }
    }
});

该代码的结果将是将所有学生对象的active属性更新为false并在相应的引用上正确设置更新后的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM