javascript - 如何将每个用户链接到他们在 Firebase 中的数据?

标签 javascript firebase firebase-authentication data-retrieval

我计划创建一个名为 users 的主树,其中将包含用作用户名的不同用户的名称。因此,每个用户名中都将包含他们的数据,例如全名、地址、电话号码。

我想知道如何获取每个用户登录其个人资料时的数据。

最佳答案

首先,我建议您花一些时间通过阅读 Firebase Guide ( Link to old Firebase Guide ) 来熟悉 Firebase。回答您自己的问题所需了解的所有内容都可以在那里找到。但为了简单起见,我将在这里举一个例子:

让我们从安全性开始,以下是此示例所需的基本 Firebase 规则:(来源:Understanding Security)(旧来源:Understanding Security)

{
  "rules": {
    "users": {
      "$user_id": {
        ".write": "$user_id === auth.uid"
      }
    }
  }
}

我将跳过实际的用户创建和登录,重点讨论有关存储和检索用户数据的问题。

存储数据:(来源:Firebase Authentication)(旧来源:User Authentication)

// Get a reference to the database service
var database = firebase.database();
// save the user's profile into Firebase so we can list users,
// use them in Security and Firebase Rules, and show profiles
function writeUserData(userId, name, email, imageUrl) {
  firebase.database().ref('users/' + userId).set({
    username: name,
    email: email
    //some more user data
  });
}

生成的 Firebase 数据将如下所示:

{
  "users": {
    "simplelogin:213": {
      "username": "password",
      "email": "bobtony"
    },
    "twitter:123": {
      "username": "twitter",
      "email": "Andrew Lee"
    },
    "facebook:456": {
      "username": "facebook",
      "email": "James Tamplin"
    }
  }
}

最后但并非最不重要的一点是数据的检索,这可以通过多种方式完成,但对于这个例子,我将使用 firebase 指南中的一个简单示例:(来源:Read and Write data)(旧来源:Retreiving Data)

//Get the current userID
var userId = firebase.auth().currentUser.uid;
//Get the user data
return firebase.database().ref('/users/' + userId).once('value').then(function(snapshot) {
    //Do something with your user data located in snapshot
});

编辑:添加返回数据的示例

因此,当您以用户 twitter:123 身份登录时,您将获得基于您的用户 ID 的位置引用,并获得以下数据:

"twitter:123": {
          "username": "twitter",
          "email": "Andrew Lee"
        }

关于javascript - 如何将每个用户链接到他们在 Firebase 中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30910704/

相关文章:

Firebase 身份验证电子邮件自定义

javascript - 如何在 dGrid 中设置行的样式

firebase - 什么时候应该使用 Firebase 事务

android - 在 Firebase 模型中保存推送的 ID

firebase - 有没有什么方法可以设置源自多个 firestore 集合的 firestore 触发器以仅触发一个云(javascript)函数?

firebase - 使用用户名和密码进行 Flutter Firebase 身份验证

javascript - 条件加载 JS - 如果在内容中预先标记

javascript - AngularJS 测试 Controller 与指令中的谷歌地图

javascript - 无法将动态添加的文本区域呈现为 TinyMCE 4.1.8

javascript - FirebaseUi-Auth强制登录