通过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

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

编辑1:我在想我需要使用push,这样我就不会覆盖firebase repo中的现有数据.
我刚刚尝试使用getValue()方法获取数据,我只能获取MAP中的数据

编辑2:没有使用我的引用的push()方法我可以看到任何以前的数据被覆盖,只有最新的信息可用.我想知道它们是否是获得参考的更好方法,并仍然保留以前的信息

解决方法

所以看起来你有自己独特的系统,在这种情况下你不需要使用.push方法(这只是帮助获得新数据的唯一引用).因此,您应该能够做到:
Map<Integer,12345));
Firebase ref = new Firebase(url).child("12345");
ref.setValue(map);

假设您的ID为“12345”,并且网址指向您要存储所有人的位置.

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

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

而不是使用.setValue,你会想要使用ref.updateChildren(更新).您可以在docs中看到如何构建更新的示例:

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

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...