【问题标题】:Remove DataSnapshot From Firebase setValue()从 Firebase setValue() 中删除 DataSnapshot
【发布时间】:2016-12-20 05:34:28
【问题描述】:

我的 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 数据库中添加了一个数据。但它会自动在我的插入数据库格式顶部包含 DataSnapshot JsonObject,这是错误的。

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

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

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    您不能将原始 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 引入所需的嵌套地图结构。参见例如Nested Json to Map using Jackson

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多