javascript - 它给定的未定义。无法从 Firebase 中检索名称
问题描述
我想在登录后从 firebase 获取用户数据。当我从数据库中获取名称时,它提供的值未定义.. 为什么?
var user = firebase.auth().currentUser;
if(user != null ){
var email_id = user.email;
var uid = user.uid;
var name = user.userName;
var user = user;
document.getElementById("user_para").innerHTML = "Welcome User : " + email_id;
document.getElementById("user_para1").innerHTML = "Welcome User : " + uid;
document.getElementById("user_para2").innerHTML = "Welcome User : " + name;
}
解决方案
请记住,firebase auth 仅保存以下数据:
email: 'user@example.com',
emailVerified: false,
phoneNumber: '+11234567890',
password: 'secretPassword',
displayName: 'John Doe',
photoURL: 'http://www.example.com/12345678/photo.png',
disabled: false
所以 user.userName 不存在。
您可以使用displayName来保存用户名,但如果您真的使用它来保存名称,您可以在 firebase 实时数据库中创建一个名为 users 的节点,您可以在其中根据 UID 保存用户名,如下所示:
users
->akdjf231dkeimdla
->username: jamesbond007
编码后可能是:
var user = firebase.auth().currentUser;
if(user != null ){
var email_id = user.email;
var uid = user.uid;
var name = user.displayName;
document.getElementById("user_para").innerHTML = "Welcome User : " + email_id;
document.getElementById("user_para1").innerHTML = "Welcome User : " + uid;
document.getElementById("user_para2").innerHTML = "Welcome User : " + name;
firebase.database().ref('/users/' + uid).once('value').then(function(snapshot) {
//Here are reading the username from the database
var username = snapshot.val().username;
});
}
如果您使用 firebase 实时数据库,请记住添加 firebase 实时数据库库。
欲了解更多信息:https ://firebase.google.com/docs/auth/admin/manage-users
推荐阅读
- python - Python 和 SAS 生成具有相同绝对值的 PCA 数据。值但倒置符号 - 为什么?
- google-apps-script - 基于另一个工作表中的选项的带有条件下拉列表的电子表格
- java - ParDo 函数不等待 Apache BEAM 中的窗口
- javascript - 查找所有满足测试功能的对象索引,如 array.findIndex() 但超过第一个索引
- java - 使用 FirebaseRecyclerAdapter 从 Firebase 实时数据库中检索数据到 Recycler View
- android - Webview 不显示全文
- c - 使用 malloc,并将分配的内存中的内容传输到文件
- python - 更新kivy上的标签
- python - Python 3:用于排序任意对象的模式(例如,Python 2 样式排序)?
- mongodb - “光标”对象没有属性 - 在 pymongo