Firebase 在注销时会一直同步三向绑定对象
Firebase keeps syncing three-way binded object when logged out
我使用 Firebase 的三向数据绑定方法同步$uid
的朋友列表(在我的代码中定义为userId
)。
计算机上(我在同一台浏览器中进行测试)注销然后使用另一封电子邮件登录时,Firebase 会不断同步上一个userId
因此,如果我先登录并userId = "userId_1"
然后注销,使用另一封电子邮件和我的userId = "userId_2"
登录,在我的朋友列表中,我从 refs 获得一个三向数据绑定的朋友列表:
fbREF + "/friends/" + "userId_1"
和
fbREF + "/friends/" + "userId_2"
如何停止同步来自旧用户 ID 的数据?
方法
在我的工厂中,我按如下方式同步:
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
中。
除非您执行 unauth() 方法,否则连接在 Firebase 端处于活动状态。因此,请在注销时执行unauth()。它应该可以解决您的问题。
相关文章:
- 如果数据绑定对象只有它的名称,那么敲除如何知道它
- 如何使用普通js绑定对象以更新值
- Knockoutjs 绑定对象问题
- 如何将 require('') 对象传递到绑定对象的作用域中
- 如果 ajax 刷新了绑定对象,则 .submit 不起作用
- 角度无意绑定/对象镜像
- 在 JavaScript 中传递绑定对象方法
- 循环绑定对象
- 我应该如何在ng重复中绑定对象的值
- Knockout js:用于绑定对象而不是单个值的代码
- Paper.js Z索引和绑定对象
- AngularJS-绑定对象列表
- 如何在指令的link函数中对绑定对象做出反应
- 事件创建中的Javascript绑定对象
- 删除元素时是否需要清除绑定对象?
- 为绑定对象添加属性
- javascript绑定对象's原型函数
- AngularJS用复选框绑定对象
- 有没有可能保护'this'引用绑定对象内的函数
- Angular绑定对象元素到HTML