android - 如何从 Android 在 Firebase 数据库中的现有数组中插入新数据?

标签 android firebase firebase-realtime-database

我正在使用 Android 学习 Firebase 数据库,Firebase 数据库中的数据数组如下图所示。

enter image description here

cineIndustry 是一个数据数组。在 JSON 中它看起来像这样

 "cineIndustry" : [ {
   "type" : "Hollywood"
 }, {
   "type" : "Kollywood"
 }, {
   "type" : "Bollywood"
 } ]

我想在此数组中插入新数据。

POJO 类

@IgnoreExtraProperties
public class CineIndustry {

void CineIndustry(){}

public String type;

}

保存新数据

CineIndustry cineIndustry = new CineIndustry();
cineIndustry.type = cineType.getText().toString();

mDatabase.setValue(cineIndustry);

当我像上面那样插入时,它将替换 Array。 JSON 结构已更改为JSON 数组 的普通JSON 对象

任何人都知道帮助我解决这个问题。

最佳答案

发生这种情况是因为您是 overwriting数据。您正在使用 setValue()方法,而不是使用 updateChildren()方法。

请进行以下更改,您的问题将得到解决。

因此,为了将数据对象写入您的 Firebase 数据库,而不是使用 ArrayList , 我建议你使用 Map .要保存数据,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference cineIndustryRef = rootRef.child("cineIndustry").push();
String key = cineIndustryRef.getKey();
Map<String, Object> map = new HashMap<>();
map.put(key, "Hollywood");
//and os on
cineIndustryRef.updateChildren(map);

如您所见,我调用了updateChildren()方法直接引用。最后,数据库应该是这样的:

Firebase-root
    |
    ---- cineIndustry
            |
            ---- pushedId1: "Hollywood"
            |
            ---- pushedId2: "Kollywood"
            |
            ---- pushedId2: "Bollywood"

关于android - 如何从 Android 在 Firebase 数据库中的现有数组中插入新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44692352/

相关文章:

Android Fragment Webview 内存泄漏

javascript - Android中的Promise,如何实现?

reactjs - 在 useEffect React 中调用异步函数中的 Firebase v9 onSnapShot

android.view.WindowManager$BadTokenException : Unable to add window -- token android. os.BinderProxy@b0baaa1 无效;您的 Activity 正在运行吗?

java.lang.RuntimeException : Unable to instantiate service 错误

javascript - react native 电话号码输入

javascript - Firebase 使用 onCreate 部署获取 ID 以获取推送通知

firebase - 将子域指向 Firebase 函数

android - 有没有办法在本地模拟 Firebase 数据库?

ios - 每个 tableViewCell 中的 Firebase 数据库观察者