如何在Firestore中设置和覆盖整个arraylist

时间:2019-03-22 02:23:31

标签: java android arraylist google-cloud-firestore

我有一个类似这样的数据库设置。

enter image description here

我想用新阵列覆盖阵列学生。

我尝试通过set方法执行此操作,但始终收到错误消息“数据无效。类型不受支持:Models.students”

这是我的代码。

 private void update(){
    DocumentReference document = db.collection("Records").document(rid);
        Map students = new HashMap();
        students.put("students", studentsList);
        document.set(students);
    }

“学生列表”是学生的数组列表(列出<学生>学生列表)

更新

我通过实施道格·史蒂文森的建议解决了这个问题

这是我更新的方法。

private void update(){
       DocumentReference document = db.collection("Records").document(rid);
       List<Map> mapList = new ArrayList<>();
       for(int i=0; i< studentsList.size(); i++){
           Map student = new HashMap();
           student.put("name", studentsList.get(i).getName());
           student.put("id", studentsList.get(i).getId());
           student.put("attended", studentsList.get(i).isAttended());
           mapList.add(student);
       }
       document.update("students", mapList);
    }

1 个答案:

答案 0 :(得分:1)

Firestore SDK不支持编写包含POJO样式对象数组的字段。这就是错误的原因。

您的替代选择是编写一个HashMap对象的ArrayList,每个对象都包含POJO中包含的字段和值。