【问题标题】:How to push data in array stored in the Firebase using Android?如何使用 Android 推送存储在 Firebase 中的数组中的数据?
【发布时间】:2019-05-02 14:24:03
【问题描述】:

我需要将数据添加到存储在数据库中的数组中,如下所示: 地点:

0:"新项目"

1:"新项目",

2:“新项目”

.

.

.

我的问题是如何在不使用Hashmap 的情况下将存储在Firebase 中的array 中的数据推送到?例如下一个推送的数据将在:

地点: 0:“旧物品”

1:"vItem",

2:"旧物品",

3:“新项目”

我知道如果我使用下面给出的方法,数据将被删除并添加一个新的数据集,

Utils.eventsRef.child(events.getUid()).child("arrayTicket").setValue(str);

有人可以帮帮我吗?

【问题讨论】:

  • 问题解决了吗?
  • 还没有,我离开了,我只是更改了数据库结构。请问如果你找到答案可以分享给我吗?
  • 为了更好地理解,您有一个包含一些字符串元素的数组,并且您想将该数组作为0:"new Item" 1:"new Item", 2:"new Item" 添加到 Firebase 数据库中,对吧?
  • 是的,这正是我需要的。
  • 好的,我马上给你写答案。

标签: java android firebase firebase-realtime-database


【解决方案1】:

根据您的 cmets,为了能够将数组添加到您的 Firebase 实时数据库中,您需要首先将您的 array 转换为 List,如下面的代码行所示:

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"

【讨论】:

  • 好的,你可以用它来初始化你的数组,但是如何在不删除旧值的情况下在 arrayTicket 中推送一个新值?
  • 在这种情况下,您必须读取现有数据(arrayTicket 对象),然后用添加的新值将其写回。如果您想要执行大量附加操作,这样的数组并不总是存储数据列表的最佳方式。为此,您最好使用 push() 方法将数据推送到某个位置。
  • 我正在寻找一种无需读取现有数据即可推送的方法。我对她的限制是,如果两台设备同时读取相同的数据并同时推送,其中一个将擦除其他用户数据,这就是为什么我正在寻找一种无需读取现有数据即可推送的方法。跨度>
  • 您无法在 Firebase 实时数据库中实现这一点。但是,这实际上在Cloud Firestore 中是可能的,您可以在其中添加/删除数组中的项目,而无需读取现有数据然后将其写回。现在可以了吗?
  • 如果您认为我的问题可能有用且清晰,请考虑投赞成票(▲)。我将不胜感激。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 2020-02-01
  • 2019-12-16
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
相关资源
最近更新 更多