0

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

我注意到,当在同一台计算机上(我在同一个浏览器中测试)时,我注销然后使用另一封电子邮件登录,然后 Firebase 会不断同步上一个电子邮件的数据userId

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

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";

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

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.

4

1 回答 1

0

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

于 2015-10-03T18:28:16.097 回答