【问题标题】:Using JavaScript and Firebase, how can I create user specific objects?使用 JavaScript 和 Firebase,我如何创建用户特定的对象?
【发布时间】:2017-01-24 09:40:58
【问题描述】:

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

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

我希望在这个阶段结束时,我可以创建一个帐户,然后为用户自动生成一个配置文件,这样用户就只有对他/她自己的信息的写入权限。

【问题讨论】:

  • 您可以像这样使用用户 uid 而不是 push:firebase.database().ref().child('Profiles').child(user.uid).set({data:data })
  • @AndréKool 这确实是这样做的惯用方式。你想写答案吗?否则,我很确定已经有重复项可以解释这一点。

标签: javascript firebase firebase-realtime-database


【解决方案1】:

最常用的存档方法是将用户数据保存在用户 ID 下。因此,您可以像这样使用 set() 而不是使用 push():

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 解释有关存储用户数据的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2016-07-11
    • 2018-08-10
    • 2012-05-18
    • 1970-01-01
    • 2021-10-14
    相关资源
    最近更新 更多