首页 > 解决方案 > 获取从登录用户 firebase null 返回中检索到的个人资料信息

问题描述

从我的 firebase 数据中,我尝试使用firebase 文档中的这个示例访问用户信息,例如政府机构和显示名称。当我使用这个例子时

    {
  "users" : {
    "citizen" : {
      "NiPS4VtdFPgVMVyhCVfMtzdP85g1" : {
        "displayName" : "user-citizen",
        "email" : "user@user.com",
        "password" : "palls123",
        "pnumber" : "123",
        "repassword" : "palls123"
      },
      "Pba7iULL4wYkTQxHB5tpbNDj7v02" : {
        "displayName" : "kevin",
        "email" : "ez@ez.com",
        "password" : "palls123",
        "pnumber" : "545",
        "repassword" : "palls123"
      },
      "gf2o8dhs9VhIsCK5Ui5rEizESbj1" : {
        "displayName" : "kevin",
        "email" : "dli@dli.com",
        "password" : "palls123",
        "pnumber" : "5454",
        "repassword" : "palls123"
      }
    },
    "government" : {
      "bfp" : {
        "AgIqgADtMeNS5d3BJTnCI0uCjcl1" : {
          "displayName" : "bfp-user",
          "email" : "bfp@bfp.com",
          "gov_agency" : "bfp",
          "gov_id" : "123",
          "password" : "palls123",
          "pnumber" : "1234",
          "repassword" : "palls123",
          "toggle" : true
        }
      },
      "ndrmmc" : {
        "XdoC2Dny5ZM69z8B2BrSWBS3CIY2" : {
          "displayName" : "ndrmmc-user",
          "email" : "ndrmmc@ndrmmc.com",
          "gov_agency" : "ndrmmc",
          "gov_id" : "123",
          "password" : "palls123",
          "pnumber" : "123",
          "repassword" : "palls123",
          "toggle" : true
        }
      },
      "pnp" : {
        "MhKiEoCtytQAHooHclSZIB3gsK42" : {
          "displayName" : "pnp-user",
          "email" : "pnp@pnp.com",
          "gov_agency" : "pnp",
          "gov_id" : "23455",
          "password" : "palls123",
          "pnumber" : "1234",
          "repassword" : "palls123",
          "toggle" : true
        }
      },
      "rta" : {
        "fehvPVwX6NXnVkf3hOyRsQBDH2Y2" : {
          "displayName" : "rta-user",
          "email" : "rta@rta.com",
          "gov_agency" : "rta",
          "gov_id" : "1234",
          "password" : "palls123",
          "pnumber" : "123",
          "repassword" : "palls123",
          "toggle" : true
        }
      }
    }
}

我正在尝试使用firebase 文档中的示例访问用户信息,例如政府机构和显示名称。当我使用此示例时,来自文档

var user = firebase.auth().currentUser;

if (user != null) {
  user.providerData.forEach(function (profile) {
    console.log(" Gov Agency : " + profile.gov_agency);
    console.log("  Provider-specific UID: " + profile.uid);
    console.log("  Name: " + profile.displayName);
  });
}

除了它提供给用户电子邮件的 uid 外,它在我这边返回 null 。我哪里做错了?

PS:有两种类型的用户,政府客户和公民客户

标签: firebaseionic-framework

解决方案


你得到一个空值是正常的profile.gov_agency:正如这里详述的,用户providerData属性是一个“非空数组”firebase.UserInfo

反过来,UserInfo具有一组已定义的属性:emailphoneNumber等。因此profile没有任何gov_agency属性。

您显然将您可以从中获得的值firebase.auth与您保存在实时数据库中的值混合在一起。

因此,您应该根据userIdemail(取决于您的数据模型)查询数据库,以获取gov_agency(and displayName) 的值以“确定它是政府客户还是公民客户”。

要查询数据库,请参阅https://firebase.google.com/docs/database/web/read-and-writehttps://firebase.google.com/docs/database/web/lists-of-data

请注意,displayNameIS 也是 的属性UserInfo,但显然您在创建用户时没有设置它。


推荐阅读