Javascript 具有子值的Firebase多路径原子更新?

Javascript 具有子值的Firebase多路径原子更新?,javascript,reactjs,firebase,firebase-realtime-database,multipath,Javascript,Reactjs,Firebase,Firebase Realtime Database,Multipath,我正在成功地更新我的用户的个人资料图片,包括他们的个人资料以及使用此功能发布的所有评论: export const storeUserProfileImage = (url) => { const { currentUser } = firebase.auth(); firebase.database().ref(`/users/${currentUser.uid}/profilePic`) .update({ url }); f

我正在成功地更新我的用户的个人资料图片,包括他们的个人资料以及使用此功能发布的所有评论:

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 });
            });
        });
  };
我知道我应该使用原子更新来实现这一点,以便数据同时更新(以防用户离开应用程序或出现其他问题)。在查询子值时,我对如何实现这一点感到困惑


任何帮助或指导都将不胜感激

声明一个变量以存储所有更新。在侦听器循环中读取更新时添加更新。循环完成后,运行原子更新

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结构的评论(就像我们已经解决的)和贡献。