Понимание основного механизма сериализации Firestore - PullRequest
0 голосов
/ 10 февраля 2020

Я хотел бы получить некоторую информацию о том, как механизм сериализации / десериализации работает в Firestore. У меня проблема в том, что я передаю объект Scala (язык JVM) в метод создания Firestore, но он взрывается в момент сериализации этих данных. После некоторого исследования выясняется, что Firestore требует значения, созданные из классов, которые имеют пустой конструктор publi c, почему это ограничение? Это то, чего нет у Scala классов. Есть ли способ обойти сериализацию Firestore и предоставить свою собственную?

1 Ответ

4 голосов
/ 10 февраля 2020

Для Firestore требуются значения, созданные из классов с пустым конструктором publi c, почему это ограничение?

Когда вы загружаете данные из Firestore, у вас есть возможность прочитать Java объект из документа путем вызова DocumentSnapshot.toObject(Class<T> valueType). Для создания возвращаемого объекта SDK Firestore должен иметь возможность вызывать конструктор в классе, который вы передаете. И единственный конструктор, который он может разумно вызвать, - это конструктор без аргументов, так как он не может определить какие значения аргументов следует передавать в противном случае.

Обратите внимание, что вызов toObject - не единственная опция для создания объекта из DocumentSnapshot. Вы также можете создать объект Java самостоятельно и извлечь отдельные значения из снимка, вызвав его get методы .


Похоже, быстрый поиск подсказывает, что он возможно также можно добавить конструктор без аргументов в Scala, поэтому я также рекомендую проверить:

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