我有这个 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
}
}
}
});
此代码的结果是将所有学生对象的 Activity 属性更新为 false
并将更新后的对象设置为相应的引用。
关于java - 如何在 Firestore 中使用 POJO 更新所有文档中的一个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52179367/