Я успешно обновляю изображение профиля моего пользователя в его профиле и во всех его обзорах, опубликованных с помощью этой функции:
export const storeUserProfileImage = (url) => {
const { currentUser } = firebase.auth();
firebase.database().ref(`/users/${currentUser.uid}/profilePic`)
.update({ url });
firebase.database().ref('reviews')
.orderByChild('username')
.equalTo('User3')
.once('value', (snapshot) => {
snapshot.forEach((child) => {
child.ref.update({ profilePic: url });
});
});
};
Я знаю, что для этого мне следует использовать атомарное обновление, чтобы данные обновлялись одновременно (на случай, если пользователь покинет приложение или что-то еще пойдет не так). Я не понимаю, как я могу это сделать при запросе дочерних значений.
Любая помощь или руководство будут очень благодарны!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Объявите переменную для хранения всех обновлений. Добавляйте обновления по мере их чтения в цикле вашего слушателя. Когда цикл закончится, запустите атомарное обновление.
export const storeUserProfileImage = (url) => {
const { currentUser } = firebase.auth();
firebase.database().ref('reviews')
.orderByChild('username')
.equalTo('User3')
.once('value', (snapshot) => {
var updates = {};
updates[`/users/${currentUser.uid}/profilePic`] = url;
snapshot.forEach((child) => {
updates[`/reviews/${child.key}/profilePic`] = url;
});
firebase.database().ref().update(updates);
});
};
Я просто принял это - спасибо за урок, ха-ха ... Я не знал, как это сделать.
Привет, Розарио, а что, если бы мне пришлось перебирать несколько ссылок? В моем случае это обзоры (как мы уже решили) и вклады с точно такой же структурой JSON.
Подумайте о принимая этот ответ, если он отвечает на ваш вопрос, чтобы другие знали, что он решен.