当前位置: 首页 > 知识库问答 >
问题:

从Firebase setValue()中删除DataSnapshot

巫马正卿
2023-03-14

我的Firebase数据库存储格式如下。

{
    key=3553: 3223,
    value={
        -KZMFwmCYKevESD6qtjD={
            text=Hello I am,
            timestamp=[
                .sv: timestamp
            ],
            imageUrl=,
            senderId=yDapbI755tOD72ivfsdferOv1RIHMnAe03
        }
    }
}

但在设置存储在firebase数据库中的值时,我是这样做的。

String Temp = "{timestamp: [.sv: timestamp], imageUrl: , senderId: " + Utils.SET_HEADER_ID + ", text: " + strMessage + "}";
System.out.println("===== Temp String : " + Temp);

String key = mFirebaseDatabaseReference.child("threads/3333:3333").push().getKey();
mFirebaseDatabaseReference.child("threads/3333:3333").child(key).setValue(Temp);

当我写上面的代码时,我在Firebase数据库中添加了一个数据。但是它会自动在我的插入数据库格式顶部包含数据快照JsonObject,就像这样,这是错误的。

DataSnapshot{
    key=3333: 3333,
    value={
        -KZPfTKJhaCC4RkIj45P={
            timestamp: [
                .sv: timestamp
            ],
            imageUrl: ,
            senderId: yDapbI755tOD72ivOv1RIHMnAe03,
            text: hiiiiiiiii
        }
    }
}

如何从Firebase的插入格式中删除此DataSnapshot?

共有1个答案

司马耘豪
2023-03-14

不能将原始JSON值传递给Firebase。相反,您必须在代码中构建数据结构:

Map<String,String> map = new HashMap<String,String>();
map.put("timestamp", Firebase.Database.ServerValue.TIMESTAMP);
map.put("imageUrl", "an actual image URL, which is missing from your question");
map.put("senderId", Utils.SET_HEADER_ID);
map.put("text", strMessage);

mFirebaseDatabaseReference.child("threads/3333:3333").child(key).setValue(map);

或者,您可以使用像Jackson这样的库将JSON介绍转换为所需的嵌套映射结构。例如,请参见使用Jackson嵌套的Json到映射。

 类似资料:
  • 用于从不存在的VM中删除磁盘的所有在线说明都与旧的Azure UI有关,该UI不包含与新门户相同的菜单命令。因此,我需要使用新的Azure管理门户删除孤立磁盘的说明。旧门户的说明对此操作毫无价值。

  • 这不起作用,我只需要在requestSpecification中清除Cookie

  • 我有一个假设,它有8个项目A-H,现在我想从中删除存储在int数组中的1,3,5位置项目。我该怎么做。 我正试着和你一起做这件事 但在数组的第一个被删除的项被更改之后,在下一次迭代中它删除了错误的元素或给出异常。

  • 我得到以下异常: 关于这个案子有什么建议吗?

  • 问题内容: 范围:两个表。创建新的顾客时,他们会将有关他们的一些信息存储到第二张表中(这也使用触发器完成,它可以按预期工作)。这是我的表结构和关系的示例。 表1-> 顾客 表2-> patron_info 管理员可以管理顾客。当他们选择移走顾客时,将顾客从 桌子1 移开。此时, 表2 没有任何反应。 我只是想创建一个触发器,以便在表1的项目已删除时从表2中删除。这是我尝试过的… 最初,我尝试删除触

  • 我正在使用gradle构建一个Spring Boot应用程序,我希望从war中删除文件,因为该文件将从外部加载(它运行在tomcat容器中,而不是嵌入式的)。 我查看了StackOverflow和Gradle文档,试图找出该做什么,但我不知道该绑定到哪个阶段,以及在创建war之前还是之后排除该文件。处理文件似乎也有多种方法。 我相信Maven使用作为等价物。