I sync a list of friends for $uid
(defined as userId
in my code) using the three-way data binding method of Firebase.
I noticed that when on the same computer (I test in the same browser) I logout and then login with another email, then Firebase keeps syncing the data from the previous userId
So if I first login and my userId = "userId_1"
and then logout, login with another email and my userId = "userId_2"
, in my friendsList I get a three-way data binded list of friends from the refs:
fbREF + "/friends/" + "userId_1"
and
fbREF + "/friends/" + "userId_2"
How can I stop syncing the data from old userId?
Method
In my factory, I sync as follows:
self.syncFriends = function(userId) {
var ref = new Firebase(fbREF + "/friends/" + userId);
return $firebaseObject(ref);
};
where fbREF = "https://CUSTOMREF.firebaseio.com"
;
When the user is logged in, obviously he has an userId retrieved by the function ref.onAuth(fnCallback)
, which I call as follows:
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;
};
Then the userId
is embedded in authData["auth"].uid
.
Unless you execute unauth() method connection is active at firebase end. Hence please execute unauth() on logout. It should resolve your problem.