Я реализовал какое-то приложение для чата с использованием базы данных Firebase. Все настроено и работает. Теперь я пытаюсь реализовать функциональность, которая после того, как имя пользователя изменит все его сообщения с новым именем пользователя. Структура сообщений выглядит следующим образом:Изменение значений в узлах базы данных Firebase по заданным критериям
Я имел успех WHIT этот код:
private void changeCurrentUserMessagesUserName(final String newUserName) {
mDatabase.child(RequestParameters.FB_CHILD_MESSAGES) //messages
.orderByChild(RequestParameters.FB_CHILD_USERS_UID) //messageUserUid
.equalTo(mUser.getUid())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot messageSnapshot : dataSnapshot.getChildren()) {
ChatMessage message = messageSnapshot.getValue(ChatMessage.class);
mDatabase.child(RequestParameters.FB_CHILD_MESSAGES) //messages
.child(message.getMessageNodeKey())
.child(RequestParameters.FB_CHILD_MESSAGES_USERS) //messageUser
.setValue(newUserName);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
//do nothing
}
});
}
Но воняет, если есть 100 сообщений в Firebase, который принадлежит текущему пользователю этот код будет сделать 100 для Firebase, чтобы изменить узел messageUser на каждое сообщение. Кто-нибудь может помочь, как сделать только один запрос?
Взгляните на метод [этот ответ] (http://stackoverflow.com/a/17438028/4916627) –