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

标签 java android firebase google-cloud-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
            }
        }
    }
});

此代码的结果是将所有学生对象的 Activity 属性更新为 false 并将更新后的对象设置为相应的引用。

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

相关文章:

ios - 错误 - 电子邮件地址格式错误。 Xcode Swift Firebase

Tomcat负载均衡环境下Java应用间通信

java - 页面加载的默认 HtmlUnitDriver 超时是多少?

android - 为什么大多数 UI 框架都是单线程的?

javascript - Pubnub历史消息限制超过一百条

java - 找不到support-v4.aar(com.android.support :support-v4:24. 1.1)

sql - BigQuery 每月活跃用户数?

java - 递归地解决迷宫问题

Java:捕获异常 - 未检查与检查

ios - FCM ios 配置