我是一个新手与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()方法,我可以看到,任何以前的数据被覆盖,只有最新的信息是可用的。 我想知道如果他们是一个更好的方式获得参考,并仍然保持以前的信息
所以看起来你有你自己的唯一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"/>