我不知道为什么但是我无法将我的对象保存到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个托管,并且没有得到保存。
如何保存?
答案 0 :(得分:1)
您可能会看到,Firebase数据库仅接受您尝试保存的Bitmap
个对象。不保证保存任何其他对象,特别是Bitmap
对象。如果您想保存String
:
Bitmap
获取 Base64 HashMap
。要保存嵌套的Map
,您可能需要多次调用数据库(每个/
一个),或转换地图&#39;每次编辑一个孩子时,都会使用 var myInbox = NotificationCompat.InboxStyle()
for (items in items)
{
myInbox.addLine(item.title)
}
val notificationBuilder = NotificationCompat.Builder(this, ChannelId)
.setSmallIcon(...)
.setContentTitle("Got news")
.setAutoCancel(true)
.setSound(...)
.setVisibility(Notification.VISIBILITY_PUBLIC)
.setContentIntent(pendingIntent)
.setLights(...)
.setStyle(myInbox)
的值进入字符串(虽然它们都非常混乱)。
答案 1 :(得分:0)
根据official documentation,Bitmap
在Firebase实时数据库中不是受支持的数据类型。请记住,作为一般规则,我会说,永远不要使用base64。您根本不需要对图像进行base64编码。如果要存储图像,请不要使用Firebase实时数据库,请使用Firebase Storage。
要使用users
和administratorsUser
填充数据库,请使用ProfileEntity
个对象更改这些地图的类型。如果要使用地图,可以使用它直接在DatabaseReference
对象上设置/更新它们。