【问题标题】:Firebase - How to permanently save user profile?Firebase - 如何永久保存用户个人资料?
【发布时间】:2016-07-29 03:58:44
【问题描述】:

Firebase 控制台只允许设置电子邮件地址和密码,没有保存用户个人资料的选项,但这可以使用代码完成:

user.updateProfile({
   displayName: "Chinmay Sarupria"
}).then(function() {
   console.log(user.displayName);
}, function(error) {
   console.log(error);
});

如果这是永久保存用户数据的方法,那么不可能为每个用户编写代码只是为了保存他们的 displayName 或者通过代码永久保存,目前它对我有用,但我不是确定它是否会永远保持这种状态。

当然,我可以将用户数据保存在实时数据库中,然后根据用户的 uid 获取它,但如果可以将用户数据保存在用户变量中,那么这比从数据库中获取数据要好得多。

【问题讨论】:

    标签: firebase firebase-realtime-database firebase-authentication


    【解决方案1】:

    引用用户对象后,您可以更新该用户的 UID 下的值。

    var rootRef = new Firebase('https://yourapp.firebaseio.com');
    // Check the current user login status and redirect if not logged in
    var user = rootRef.getAuth();
    if (user) {
      var user = rootRef.getAuth();
      var userRef = rootRef.child('users').child(user.uid);
      ... do something with the logged in user...
    }
    
    function writeData () {
      var user = rootRef.getAuth();
      var userRef = rootRef.child('users').child(user.uid);
      var profileRef=userRef.child('profile').push();
      profileRef.update ({
        name: "Tony",
        position: "Developer"
      });
    };
    

    这应该为您的用户个人资料提供如下结构:

    }
      "users" : {
        "067f75bf-4a07-473e-82e5-d9a5ee11be17" : {
          "profile" : {
          "-KN2dG5X4lLpp0fwfsXK" : {
            "name" : "Tony",
            "position" : "Developer"
          }
        }
      }   
    }
    

    注意 push() 函数会为您提供随机生成的密钥。你可能不需要它。

    希望这会有所帮助。

    【讨论】:

    • 请不要将用户配置文件存储在按键下。除非/users/$uid/profile 下每个用户需要多个节点,否则您应该将数据存储为/users/$uid/name/users/$uid/position 等。
    猜你喜欢
    • 2020-01-05
    • 1970-01-01
    • 2018-04-12
    • 2018-07-16
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多