使用JavaScript和Firebase,如何创建特定于用户的对象?

时间:2016-09-16 08:17:46

标签: javascript firebase firebase-realtime-database

我真正想做的就是允许用户创建一个对象,只有该用户才能看到和更改它。因此,例如:我的代码与此类似:

    function createAccount(email, pass){
       firebase.auth().createUserWithEmailAndPassword(email,pass).catch(function(error) {
            var errorCode = error.code;
            var errorMessage = error.message;
            console.log(errorCode+":"+errorMessage);
       });
    }

我还有一个函数,我称之为createAccountHome(),我希望它的结构如下:

    function createAccountHome(){
        firebase.database().ref().child('Profiles').push({
            // user id : something to link object solely to this user
            // data: data
        });
    }

我希望在此阶段结束时,我可以创建一个帐户,然后为用户自动生成一个配置文件,以便用户只能对他/她自己的信息进行写访问。

1 个答案:

答案 0 :(得分:1)

最常见的方法是将用户数据保存在用户ID下。所以不使用push()而是使用set(),如下所示:

firebase.database().ref().child('Profiles').child(user.uid).‌​set({
  //data:data
})

要确保用户只能查看和编辑自己的个人资料,请使用以下安全规则:

{
  "rules": {
    "Profiles": {
      "$uid": {
        ".read": "auth != null && auth.uid ==$uid",
        ".write": "auth != null && auth.uid ==$uid"
      }
    }
  }
}

对于一些阅读:link to old docs解释有关存储用户数据的更多信息。