gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:52 25 4
gpt4 key购买 nike

我有这个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 并将更新后的对象设置在相应的引用上。

关于java - 如何在 Firestore 中使用 POJO 更新所有文档中的一个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56005113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com