Firestore DocumentReference Сериализация - PullRequest
0 голосов
/ 21 января 2019

У меня есть ПОЖО, которое отображает документ пожарного депо. Этот документ содержит ссылки на другие документы другой коллекции.

class Game(var local: String? = null, var visitor: String? = null,
        var events: MutableList<DocumentReference> = mutableListOf(), var date: Date? = null): Serializable 

Проблема в том, что DocumentReference не сериализуем. Я прочитал, что могу сохранить путь как String, а затем сам создать объект (FirebaseFirestore.getInstance (). Document (path)), но тогда в firestore больше нет поля типа Reference.

Итак, мой вопрос, это хороший подход? Кроме того, имеет ли значение, что поле является строкой, а не ссылкой?

С уважением, Диего

1 Ответ

0 голосов
/ 21 января 2019

Итак, мой вопрос, это хороший подход?

Да, это так.Наиболее важной частью в DocumenetReference является путь строки.Если вы сериализуете это, вы можете очень легко воссоздать объект DocumentReference.

В заключение, если вам нужно сериализовать объект DocumentReference, используйте метод DocumentReference getPath () , чтобы получитьСтрока литерала, которая представляет местоположение документа в базе данных.Чтобы десериализовать этот путь String обратно в объект DocumentReference, просто используйте FirebaseFirestore.getInstance (). Document (path) .

Редактировать:

Это означает, что поле в базе данных теперь является String вместо Reference.

Это верно.

Это имеет значение?Я полагаю, что ссылка должна иметь какое-то преимущество.

Да, так как теперь свойство имеет тип String, вы больше не можете использовать преимущества класса 1030 * DocumentReference .,Но это обходной путь, который может помочь вам достичь того, чего вы хотите.Класс String можно сериализовать, а DocumentReference - нет.

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