0

Firebase の 3 方向データ バインディング メソッドを使用して、$uid(私のコードで定義されている)のフレンドのリストを同期します。userId

同じコンピューター (同じブラウザーでテスト) でログアウトしてから別のメールでログインすると、Firebase が以前のデータを同期し続けることに気付きました。userId

したがって、最初にログインしてuserId = "userId_1"からログアウトし、別の電子メールと my でログインするとuserId = "userId_2"、friendList で refs から 3 方向のデータバインドされた友人のリストを取得します。

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

ユーザーがログインしているとき、明らかに、彼は function によって取得された 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 に答える