Как установить и перезаписать весь список массивов в firestore

#java #android #arraylist #google-cloud-firestore

#java #Android #список массивов #google-облако-firestore

Вопрос:

У меня есть настройка базы данных, которая выглядит следующим образом.

введите описание изображения здесь

Я хочу перезаписать массив students своим новым массивом.

Я пытался сделать это методом set, но я продолжаю получать сообщение об ошибке «Недопустимые данные. Неподдерживаемый тип: Models.students»

Вот мой код.

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

«studentslist» — это массив студентов (список< студенты> studentslist)

Обновить

Я решил проблему, реализовав то, что предложил Дуг Стивенсон

Вот мой обновленный метод.

 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:

Firestore SDK не поддерживает запись поля, представляющего собой массив объектов в стиле POJO. В этом причина ошибки.

Ваша альтернатива — вместо этого написать ArrayList объектов HashMap, каждый из которых содержит поля и значения, содержащиеся в POJO.