我的Firebase数据库中有一个结构,如下所示:
--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我想在用户退出时将其删除。研究这个我遇到了answer。
我是这样申请的:
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)
});
})
这可以工作并移除用户,但它在页面加载时会立即执行,即使在调用函数时...图表也会变粗
答案 0 :(得分:2)
通过
从表中删除项目int libusb_interrupt_transfer (struct libusb_device_handle *dev_handle, unsigned char endpoint, unsigned char *data, int length, int *transferred, unsigned int timeout)
答案 1 :(得分:2)
userOffline(userUID) {
this.af.database.list('/users/'+userUID).remove();
}
所以这很有效。这么简单......
谢谢@pengyy,如果没有你的意见我就不会到那里。