加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Firebase Angularfire2检查数据库中是否存在用户

发布时间:2020-12-12 08:54:07 所属栏目:MsSql教程 来源:网络整理
导读:我有一个包含2个对象的数据库.它看起来像这样: users - KEY login: "xexe" password: "123" - KEY login: "dede" password: "123" 现在我正在检查数据库中是否存在用户 constructor(private af: AngularFire) { this.users = af.database.list('/users'); }
我有一个包含2个对象的数据库.它看起来像这样:
users
    - KEY
        login: "xexe"
        password: "123"

    - KEY
        login: "dede"
        password: "123"

现在我正在检查数据库中是否存在用户

constructor(private af: AngularFire) {
    this.users = af.database.list('/users');
  }

  registerUser(login: string,password: string) {
    this.af.database.list('/users',{
      query: {
        orderByChild: 'login',equalTo: login
      }
    }).subscribe(response => {
      if(response.length === 0) {
        console.log("User does not exist");
        //here i will add a user
      } else {
        console.log("Users exists");
      }
    })
  }

有什么问题?

让我们尝试使用“dede”登录注册用户(用户应该存在)

当我第一次单击提交按钮时,控制台显示:
用户存在 – >好吧,那很好.

问题是当我第二次点击提交时(没有刷新网页)

然后console.log向我显示了两条消息

User does not exist
User exists

这将为新用户添加不应该做的事情.为什么第二次订阅函数遍历每一行?怎么解决?

解决方法

您可以构建数据以使用登录属性作为KEY,而不是使用查询.
{
  "users": {
    "dede": {
      "login": "dede","password": "Do not store passwords :)"
    },"xexe": {
      "login": "xexe"
    }
  }
}

现在,您可以创建对此位置的引用,并检查该对象是否存在.

registerUser(login: string,password: string) {
  const user = this.af.database.object(`users/${login}`);
  user.subscribe(data => {
    if(data.$value !== null) {
      console.log('User does not exist');
    } else {
      console.log('User does exist');
    }
  });
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读