javascript - 带有子值的 Firebase 多路径原子更新?

标签 javascript reactjs firebase firebase-realtime-database multipath

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

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);

        });
};

关于javascript - 带有子值的 Firebase 多路径原子更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51549433/

相关文章:

javascript - 在 jQuery 中访问子 DIV

javascript - 用 Javascript Regex 替换不包含特定字符串的行的回车符

JavaScript 抛出未定义的错误

javascript - componentDidMount 内的 "setState(…): Can only update a mounted or mounting component"

javascript - 展开行时 react 表加载详细数据

java - 使用用户名引用将数据保存到 Firebase

javascript - Firebase Twitter 身份验证和 PhoneGap

node.js - Firebase Firestore 函数从通配符获取数据,然后将数据写入另一个集合

javascript - 在 Django 项目中使用 typeahead.js

reactjs - 为什么 localhost 服务器在运行 React 时启动?