Java 如何使用Android推送Firebase中存储的数组中的数据?
我需要将数据添加到存储在数据库中的数组中,如下所示: 地点: 0:“新项目” 1:“新物品” 2:“新项目” 我的问题是如何将数据推入Firebase中存储的Java 如何使用Android推送Firebase中存储的数组中的数据?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我需要将数据添加到存储在数据库中的数组中,如下所示: 地点: 0:“新项目” 1:“新物品” 2:“新项目” 我的问题是如何将数据推入Firebase中存储的数组,而无需使用哈希映射?例如,下一次推送的数据将导致: 地点: 0:“旧项目” 1:“维特姆” 2:“旧物品” 3:“新项目” 我知道如果我使用下面给出的方法,数据将被删除,并添加一个新的数据集 Utils.eventsRef.child(events.getUid()).child("arrayTicket").setValue(
数组
,而无需使用哈希映射
?例如,下一次推送的数据将导致:
地点:
0:“旧项目”
1:“维特姆”
2:“旧物品”
3:“新项目”
我知道如果我使用下面给出的方法,数据将被删除,并添加一个新的数据集
Utils.eventsRef.child(events.getUid()).child("arrayTicket").setValue(str);
有人能帮我吗?根据您的评论,要将阵列添加到Firebase实时数据库中,您需要首先将
阵列
转换为列表
,如以下代码行所示:
String[] items = {"newItem", "newItem", "newItem"};
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference arrayTicketRef = rootRef.child("arrayTicket");
arrayTicketRef.setValue(Arrays.asList(items));
Firebase控制台中的结果将是:
Firebase-root
|
--- arrayTicket
|
--- 0: "newItem"
|
--- 1: "newItem"
|
--- 2: "newItem"
你解决问题了吗?还没有,我忘了,我只是更改了数据库结构。如果你找到了答案,你能与我分享吗?为了更好地理解,你有一个数组,其中包含一些字符串元素,你想将该数组添加到Firebase数据库中,如
0:“new Item”1:“new Item”,2:“new Item”
,对吗?是的,这正是我需要的。好的,我马上给你写一个答案。好的,有了它,您可以初始化数组,但如何在不删除旧值的情况下在arrayTicket中推送新值呢?在这种情况下,您必须读取现有数据(arrayTicket对象),然后使用添加的新值将其写回。如果要执行大量追加操作,这样的数组并不总是存储数据列表的最佳方式。为此,最好使用push()方法将数据推送到某个位置。我正在寻找一种方法,可以在不读取现有数据的情况下进行推送。我的限制是,如果两台设备同时读取相同的数据并同时推送,其中一台将删除其他用户数据,这就是为什么我在寻找一种不读取现有数据的推送方式。在Firebase实时数据库中,您无法实现这一点。但是,这实际上是可能的,因为您可以从数组中添加/删除项,而无需读取现有数据,然后将其写回。现在可以吗?如果你认为我的问题可能是有用的和清楚的,请考虑投票表决。▲). 非常感谢,谢谢。