如何按键或值删除用户?

时间:2017-03-02 21:51:12

标签: angular firebase firebase-realtime-database angularfire2

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

这可以工作并移除用户,但它在页面加载时会立即执行,即使在调用函数时...图表也会变粗

2 个答案:

答案 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,如果没有你的意见我就不会到那里。