Я не знаю почему, но я не могу сохранить свой объект в FirebaseDatabase. Кто-нибудь может мне помочь?
Мой объект:
public class ChatEntity {
public static final String ENTITY_IDENTIFIER = "chats";
private String id;
private String chatTitle;
private Map<String, ProfileEntity> users;
private Map<String, ProfileEntity> administratorsUser;
private Bitmap chatIcon;
... Getters and Setters ...
}
Я сохраняю это с помощью:
FirebaseDatabase.getInstance().getReference(ChatEntity.ENTITY_IDENTIFIER).child(chat.getId()).setValue(chat);
И сохраняется только это:
{
"1521122180142&Teste&tduWYxVHRVPVIx6Sv4p8fNwKKJi2" : {
"chatTitle" : "Teste",
"id" : "1521122180142&Teste&tduWYxVHRVPVIx6Sv4p8fNwKKJi2"
}
}
Поле chatIcon было null, так что ничего страшного. Но две карты имеют 1 и 2 записи и не сохраняются.
Как мне его сохранить?
Как видите, база данных Firebase принимает только те объекты String, которые вы пытаетесь сохранить. Сохранение любого другого объекта, особенно Bitmap, не гарантируется. Если вы хотите сохранить Bitmap:
String из Bitmap.Чтобы сохранить вложенный HashMap, вы можете вызвать базу данных несколько раз (по одному для каждого Map) или преобразовать значения карт в строки с помощью / каждый раз, когда вы редактируете дочерний элемент (хотя оба они очень беспорядочные ).
Вам просто нужно преобразовать dataSnapshot.getValue() в нужный объект, всегда проверяя его совместимость.
Согласно официальная документация, Bitmap не является поддерживаемым типом данных в базе данных Firebase Realtime. Помните, как правило, я бы сказал, никогда не используйте base64. Вам действительно не нужно кодировать ваше изображение с помощью base64. Если вы хотите хранить изображения, не используйте базу данных Firebase Realtime, используйте Хранилище Firebase.
Чтобы ваша база данных была заполнена users и administratorsUser, измените тип этих карт с объектами ProfileEntity. Если вы хотите использовать карты, вы можете использовать их для установки / обновления непосредственно на объекте DatabaseReference.
Поэтому, если я создам метод, возвращающий строку JSON этого объекта, я могу это сохранить. Но как мне восстановить его из базы данных?