我需要在退出时调用offAuth方法吗?

时间:2016-05-16 08:59:29

标签: firebase firebase-realtime-database firebase-authentication

我创建了一个以前用于在Firebase数据库的用户节点中存储用户详细信息的功能。但是,在今天尝试它时,它现在返回一条错误消息,说

TypeError: Cannot read property 'uid' of null

我编写的代码只是将auth.uid存储为用户的子级,然后在该节点内存储该用户的所有数据。截至周五,这适用于少数用户,但现在它正在产生上述错误消息。

要解决此问题,我需要在注销时调用offAuth方法吗?如果是这样,我将如何解决这个问题?

到目前为止我的代码如下。

ref.onAuth(function(authData) {
    ref.child('user').child(authData.uid).set(authData).then(function(auth) {
        console.log('Data Saved Successfully!');
    }).catch(function(error) {
        console.log(error);
    })
})

1 个答案:

答案 0 :(得分:0)

只要用户的身份验证状态发生更改,就会调用onAuth()方法。这意味着在用户进行身份验证和未经身份验证时都会调用它。在后一种情况下,authData参数将为null,您必须在代码中处理它。

来自Firebase documentation

使用onAuth()方法侦听用户身份验证状态的更改。

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.onAuth(function(authData) {
  if (authData) {
    console.log("User " + authData.uid + " is logged in with " + authData.provider);
  } else {
    console.log("User is logged out");
  }
});

您在代码中遗漏了if