запись данных в firebase через приложение для android
Я новичок с 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);
из-за используемой ссылки push данные сохраняются следующим образом :
-J5upSABqTLJ1Wfu-jFq
12345
id: 12345
name: abcd
где-как я хочу, чтобы данные хранились так:
12345
id: 12345
name: abcd
Я не совсем уверен, что пример кода выше является правильным способ хранения данных. Поскольку я хочу иметь возможность обновлять существующие данные в более поздний момент времени . Есть предложения ?
EDIT 1: я думаю, что мне нужно использовать push, чтобы я не переписывал существующие данные в репо firebase. Я только что попытался вернуть данные с помощью метода getValue (), и я могу только получить данные, которые находятся в MAP
EDIT 2: без использования метода push () с моей ссылкой Я вижу, что любые предыдущие данные перезаписываются и только последняя информация. Мне интересно, являются ли они лучшим способом получить ссылку и по-прежнему поддерживать предыдущую информацию
1 ответов
таким образом, похоже, у вас есть собственная система уникальных идентификаторов, и в этом случае вам не нужно использовать .push
метод (это просто помощник для получения уникального ref для новых данных). Поэтому вместо 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
указывает на место, где вы хотите сохранить все ваши persons
.
обновить данные без перезаписи, ваш ref
будет:
Firebase ref = new Firebase(url).child("12345");
и вместо использования .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);