2017-02-15 8 views
0

Недавно я начал использовать библиотеку FirebaseDatabase на Android Studio. Итак, я прочитал, что, когда вы обновляете или изменяете несколько местоположений в своей базе данных Firebase, в случае возникновения какой-либо ошибки и для обеспечения того, чтобы данные не были изменены в некоторых местах и ​​не были изменены в других, используются транзакции.

Firebase - Multi Path Update с использованием транзакций в Android Studio

Сделки в JavaScript были тщательно и тщательно обработаны. Но документация для библиотеки Android Studio не очень понятна. Ссылки являются link1 и link2


Что Изменяемые данные и какое значение это держать? Прямо сейчас, это то, как я обновляю или изменяю данные в своей базе данных. Мне нужно обновить значения в узлах и сообщений пользователя

HashMap<String, Object> hm = new HashMap<>(); 
hm.put("https://stackoverflow.com/users/"+key+"/name/","New Name"); 
hm.put("/posts/"+key+"/number_of_posts/", 2); 
FirebaseDatabase.getInstance().getReference().updateChildren(hm, new DatabaseReference.CompletionListener() { 
    @Override 
    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
     if(databaseError == null) 
      Log.d(TAG, "TASK WAS SUCCESSFULLY COMPLETED"); 
     else 
      Log.d(TAG, "SOMETHING WENT WRONG"); 
    } 
}); 

Я знаю, что это неправильный способ сделать это, так что объяснение или ссылку на учебник, чтобы сделать это было бы очень полезно.

+1

Документация Firebase содержит довольно приличный пример транзакций здесь: https://firebase.google.com/docs/database/android/read-and-write#save_data_as_transactions. Но транзакции и многопутевые обновления по-разному различаются, поскольку [транзакции работают только в одном месте] (http://stackoverflow.com/questions/39297884/how-can-i-use-a-transaction-while-performing- а-мультиместоположения-обновление-в-firebase). –

+0

Так есть ли другой безопасный способ, которым я могу выполнять многопутевые обновления? Или мой текущий метод - правильный способ сделать это? –

ответ

2

Так что, видимо, это был правильный путь. Всякий раз, когда вам нужно выполнять многопутевые обновления, вы используете Hash-Map и функцию updateChildren (hashMap). Слушатель завершения является необязательным и может быть добавлен. https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html