登出后,Firebase会保持同步三向绑定对象

时间:2015-06-17 12:27:54

标签: javascript firebase angularfire firebase-authentication

我使用Firebase的三向数据绑定方法同步$uid(在我的代码中定义为userId)的朋友列表。

我注意到当我在同一台计算机上(我在同一浏览器中测试)时,我会注销,然后使用其他电子邮件登录,然后Firebase会保持同步以前userId

的数据

因此,如果我首先登录我的userId = "userId_1"然后注销,请使用另一封电子邮件和我的userId = "userId_2"登录,在我的friendsList中,我会从refs中获得一个三向数据绑定的朋友列表:< / p>

fbREF + "/friends/" + "userId_1"

fbREF + "/friends/" + "userId_2"

如何停止同步旧userId的数据?

方法

在我的工厂,我按如下方式同步:

    self.syncFriends = function(userId) {
        var ref = new Firebase(fbREF + "/friends/" + userId);
        return $firebaseObject(ref);
    };

其中fbREF = "https://CUSTOMREF.firebaseio.com";

当用户登录时,显然他有一个由函数ref.onAuth(fnCallback)检索的userId,我将其调用如下:

self.checkSocialAuthState = function() {
      var qCheck = $q.defer();

      // --
      function authDataCallback(authData) {
        if (authData) {
          qCheck.resolve(authData);
        } else {
          qCheck.reject("SOCIALAUTH_LOGGED_OUT")
          console.log("User is logged out");
        }
      };

      // --
      var ref = new Firebase(fbREF);
      ref.onAuth(authDataCallback);

      return qCheck.promise;
    };

然后userId嵌入authData["auth"].uid

1 个答案:

答案 0 :(得分:0)

除非你执行unauth()方法,否则firebase端的连接是活动的。因此,请在注销时执行unauth()。它应该可以解决你的问题。