如何按键或值删除用户?(How do I remove a user by key or value

2019-09-29 21:22发布

我在我的火力地堡数据库这样的结构:

--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)
  });
})

这工作,并删除用户,但它这样做马上在页面加载即使是在函数被调用...情节变厚

Answer 1:

通过删除表项

this.af.database.list('/users').remove(snapshot.$key)


Answer 2:

  userOffline(userUID) {
    this.af.database.list('/users/'+userUID).remove();
  }

所以这个工作。 很简单...

由于@pengyy我就不会没有你的意见了那里。



文章来源: How do I remove a user by key or value?