【问题标题】:Firebase keeps syncing three-way binded object when logged out注销时 Firebase 不断同步三向绑定对象
【发布时间】:2015-09-02 16:33:18
【问题描述】:

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

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

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

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中。

【问题讨论】:

标签: javascript firebase angularfire firebase-authentication


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多