2017-02-22 2 views

ответ

1

насколько я понимаю, вы хотите, чтобы изменить поле и вернуть измененные данные.

enter image description here

для например, для этой структуры данных, если вы хотите изменения Username, создать пользователя модальность с другим именем, User newUser = new User("https://...","newUserName). И изменить поле User модальный

public String Profile; 
public String newKey; 

Затем дать новый модальный к этому UID,

FirebaseDatabase.getInstance().getReference().child("Users").child("ECWHIksxJ0Q5SUIIrev4BjnjmrJ3").setValue(newUser, new DatabaseReference.CompletionListener() { 
        @Override 
        public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
         DatabaseReference yourRef = databaseReference.getRef(); 
        } 
       }); 

Теперь у вас есть ссылки изменившихся данных. Вы попробовали что-то вроде этого?

Update:

Если вы хотите обновить несколько значений/поле с одним действием, вы должны создать карту и положить каждый путь в нее значения.

В firebase каждая таблица, каждое конкретное поле - это путь. Рассмотрим структуру данных, показанную выше. Если вы хотите изменить Username поле:

HashMap<String, Object> updateMap = new HashMap<>(); 

updateMap.put("/Users/ECWHIksxJ0Q5SUIIrev4BjnjmrJ3/Username", "newUserName"); 

Для другого пользователя:

updateMap.put("/Users/DIFFERENT_USER_KEY/Username", "newUserName2"); 

для различного стола:

updateMap.put("/YourOtherTable/DifferentPath/DifferentField", true); 

Затем получить корневую ссылку на базу данных и обновить все сразу.

FirebaseDatabase.getInstance().getReference().updateChildren(updateMap).addOnCompleteListener(new OnCompleteListener...) 

Это очень простой способ обновить много вещей в одном действии, но это вызывает проблемы при написании firebase rules. Потому что вы получаете свою корневую ссылку и пытаетесь установить для нее значение. Выбор ваш.

+0

Ах да .. Спасибо, это помогло. – Venky

+0

@AtaerCaner Что делать, если я хочу изменить данные для многих пользователей? Как я могу это сделать без жесткого кодирования случайного ключа? –

+0

@ VictorNgure я обновил свой ответ – AtaerCaner

Смежные вопросы