我是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);
Run Code Online (Sandbox Code Playgroud)
由于使用了推送引用,数据的存储方式如下:
-J5upSABqTLJ1Wfu-jFq
12345
id: 12345
name: abcd
Run Code Online (Sandbox Code Playgroud)
在哪里 - 因为我希望数据存储如下:
12345
id: 12345
name: abcd
Run Code Online (Sandbox Code Playgroud)
我不完全确定上面的代码示例是否是存储数据的正确方法.因为我希望能够在以后更新现有数据.有什么建议 ?
编辑1:我想我需要使用push,这样我就不会覆盖firebase repo中的现有数据.我刚刚尝试使用getValue()方法获取数据,我只能获取MAP中的数据
编辑2:没有使用我的参考push()方法我可以看到任何以前的数据被覆盖,只有最新的信息可用.我想知道它们是否是获得参考的更好方法,并仍然保留以前的信息
hia*_*ttp 16
所以看起来你有自己独特的系统,在这种情况下你不需要使用这个.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);
Run Code Online (Sandbox Code Playgroud)
假设您的ID是"12345"并且url指向您要存储所有内容的位置persons.
要更新数据而不覆盖,您ref将:
Firebase ref = new Firebase(url).child("12345");
Run Code Online (Sandbox Code Playgroud)
而不是使用.setValue你想要使用ref.updateChildren(updates).您可以updates在docs中查看如何构建示例:
Map<String, Object> updates = new HashMap<String, Object>();
updates.put("first", "Fred");
updates.put("last", "Swanson");
nameRef.updateChildren(updates);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10858 次 |
| 最近记录: |