从Firebase中删除DataSnapshot setValue()

时间:2016-12-20 05:34:29

标签: android firebase firebase-realtime-database

我的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?

1 个答案:

答案 0 :(得分:1)

您无法将原始JSON值传递给Firebase。您必须在代码中构建数据结构:

Restaurant.order(:name).pluck(:name)

或者,您可以使用像Jackson这样的库来转换JSON介绍所需的嵌套地图结构。请参阅示例Nested Json to Map using Jackson