我在我的火力地堡数据库这样的结构:
--users
--v7BwBnUBqJMXCtoOHYE51jXCwhY2: uid
--etc
当用户通过验证这样的用户表'被填充:
loginFb() {
this.af.auth.login({
provider: AuthProviders.Facebook,
method: AuthMethods.Popup,
}).then(
(user) => {
this.userOnline(user.uid, 'uid');
this.router.navigate(['/members']);
}).catch(
(err) => {
this.error = err;
})
}
userOnline(uid, value) {
const users = this.af.database.object('/users');
users.update({ [uid]: value });
}
这给用户EA在由FB所产生的用户表这就是一个UID。
我想,当他们注销来删除该用户。 研究这个我也碰到过这样的答案 。
我申请它是这样:
logout(userUID) {
this.af.auth.logout();
this.userOffline(userUID);
this.router.navigateByUrl('/login');
}
userOffline(userUID) {
const user = this.af.database.list('/', {
query: {
orderByChild: userUID,
equalTo: 'uid'
}
});
user.subscribe(snapshots=>{
snapshots.forEach(snapshot => {
console.log(snapshot);
snapshot.ref.remove();
});
})
}
在执行console.log的结果是:
Object {v7BwBnUBqJMXCtoOHYE51jXCwhY2: "uid", $key: "users"}
唉,我得到这个错误:
Cannot read property 'remove' of undefined
我敢肯定有一个更好的方式来做到这一点,但我无法找到任何东西。 任何建议表示赞赏。
编辑
由于@pengyy评论我做了一个小的修改,以他们的建议。
user.subscribe(snapshots=>{
snapshots.forEach(snapshot => {
console.log(snapshot);
this.af.database.list('/users').remove(snapshot.userUID)
});
})
这工作,并删除用户,但它这样做马上在页面加载即使是在函数被调用...情节变厚