Добавить объект в массив в FireStore, используя arrayUnion - PullRequest
0 голосов
/ 07 января 2020

В моем приложении android я построил объект с именем "Урок" (в котором есть только 2 поля строк).

У меня есть коллекция в Firestore, одно из ее полей является массивом "Уроки". "(что называется" мои уроки ").

Я хочу добавить еще один урок в массив. Я попытался использовать:

DocumentReference.update("myLessons", FieldValue.arrayUnion(A_LESSON));

, но всегда получаю исключение:

 java.lang.IllegalArgumentException: Invalid data. Unsupported type: com.example.classmate.Models.Lesson

Но когда я пытался сделать это с целыми числами и строками, это сработало (несмотря на то, что я объявил массив как массив «Урок».

Можно ли загрузить в массив объект без вытеснения? Как я могу загрузить объект в массив?

Спасибо!

1 Ответ

1 голос
/ 07 января 2020

Это ограничение SDK для Firestore. Исключение происходит от здесь . Метод выясняет, может ли он обрабатывать аргумент, переданный FieldValue.arrayUnion(). Вы передаете пользовательский тип com.example.classmate.Models.Lesson, но поскольку он не является одним из принятых типов, он генерирует исключение IllegalArgumentException.

Вместо этого вы должны передать один из допустимых типов, как показано в этом методе parseScalarValue (например, null, Integer, Double, String и др. c).

Если вы хотите иметь возможность передавать пользовательский тип класса, я предлагаю подать запрос на добавление функции в GitHub для Firebase SDK .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...