通过Android应用程序将数据写入Firebase

我是一个新手与firebase,并试图使用这个作为后端的android应用程序来存储数据。 数据的格式是一个关键值对。

这是我用来存储数据的代码:

Map<Integer, PersonData> map = new HashMap<Integer, PersonData>(); map.put(PersonData.getID(), new PersonData("abcd", 12345)); Firebase ref = new Firebase(url).push(); ref.setValue(map); 

由于使用了推式参考,数据被存储如下:

 -J5upSABqTLJ1Wfu-jFq 12345 id: 12345 name: abcd 

在哪里,因为我想要这样的数据存储:

 12345 id: 12345 name: abcd 

我不完全确定上面的代码示例是否是存储数据的正确方法。 因为我希望能够在以后的时间更新现有的数据。 有什么build议么 ?

编辑1:我想我需要使用推,以便我不覆盖现有的数据在Firebase回购。 我刚刚尝试使用getValue()方法获取数据,我只能获取MAP中的数据

编辑2:没有使用我的参考push()方法,我可以看到,任何以前的数据被覆盖,只有最新的信息是可用的。 我想知道如果他们是一个更好的方式获得参考,并仍然保持以前的信息

Solutions Collecting From Web of "通过Android应用程序将数据写入Firebase"

所以看起来你有你自己的唯一id的系统,在这种情况下,你不需要使用.push方法(这只是一个帮助器来获得新数据的唯一参考)。 所以,而不是推你应该能够做到:

 Map<Integer, PersonData> map = new HashMap<Integer, PersonData>(); map.put(PersonData.getID(), new PersonData("abcd", 12345)); Firebase ref = new Firebase(url).child("12345"); ref.setValue(map); 

假设你的ID是"12345"url指向你想要存储所有人的位置。

要更新数据而不覆盖,您的ref将是:

 Firebase ref = new Firebase(url).child("12345"); 

而不是使用.setValue你会想使用ref.updateChildren(updates) 。 您可以在文档中看到如何构build示例中的updates

 Map<String, Object> updates = new HashMap<String, Object>(); updates.put("first", "Fred"); updates.put("last", "Swanson"); nameRef.updateChildren(updates); 

确保在清单中包含项目的使用权限。

 <uses-permission android:name="android.permission.INTERNET"/>