首页 > 解决方案 > 它给定的未定义。无法从 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;


}

标签: javascriptfirebaseundefined

解决方案


请记住,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


推荐阅读