Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript firebase身份验证在if条件下不起作用_Javascript_Angular_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Javascript firebase身份验证在if条件下不起作用

Javascript firebase身份验证在if条件下不起作用,javascript,angular,firebase,firebase-realtime-database,firebase-authentication,Javascript,Angular,Firebase,Firebase Realtime Database,Firebase Authentication,在这里,我试图用相同的固定号码注册一个用户。但是限制2个用户可以使用相同的单位号码注册。这里我想做的是检查是否有任何2个用户已注册相同的单位,如果是,则其他成员将不会获得注册并提示消息,如果没有用户或只有1个用户已注册,则用户可以成功获得系统注册。我的if条件警报值为len,但当我将代码放入该条件中时,我得到的不是警报 这是我的密码 registerUser(phoneNumber: number) { alert('flat' + this.flatn.value); var q = fi

在这里,我试图用相同的固定号码注册一个用户。但是限制2个用户可以使用相同的单位号码注册。这里我想做的是检查是否有任何2个用户已注册相同的单位,如果是,则其他成员将不会获得注册并提示消息,如果没有用户或只有1个用户已注册,则用户可以成功获得系统注册。我的if条件警报值为len,但当我将代码放入该条件中时,我得到的不是警报

这是我的密码

registerUser(phoneNumber: number) {

alert('flat' + this.flatn.value);

var q = firebase.database().ref('users').orderByChild('flatno').equalTo(this.flatn.value);
q.once('value', (snapshots: any) => {
   // alert(JSON.stringify(snapshots.val()));

        this.len = snapshots.numChildren();
        alert('len ='+this.len);
    if(this.len < 2){
      this.alert('success');
      // i wanted to register user only if this condition gets true. but my code is not being perform as i want which is written after if condition.
    }else{
      //this.alert('success');
      this.alert('More than 2 users are not allowed to register with same flat');
          // flatno does not yet exist, go ahead and add new user
    }

    this.fire.auth
    .createUserWithEmailAndPassword(this.email.value, this.password.value)
    .then(data => {
      let currentUserUid = this.fire.auth.currentUser.uid;
      this.uniqueDeviceID.get()
      .then((uDid: any) => this.uDid = uDid)
      .catch((error: any) => alert('err' + error));
      alert(this.uDid);
      firebase.database().ref('users/' + currentUserUid).set({
        ID: currentUserUid,
        email: this.email.value,
        password: this.password.value,
        first_name: this.fname.value,
        last_name: this.lname.value,
        contact_no: this.phone.value,
        flatno: this.flatn.value,
        wing: this.wing.value,
        parking_slot: this.vehicle.value,
        familyMember: this.familyMember.value,
        username: this.user.value,
        device_id: this.uDid
      });

      this.fdb.list("/users_device/").push({
        device_id: this.uDid,
        Uid: currentUserUid
      });
      console.log("got data ", data);
      //this.alert(data);
       this.alert("Registered!");
      data.sendEmailVerification().then(
        function () {
          this.alert("Email Sent Please check your mailbox!");
        },
        function (error) {
          alert("error!");
        }
      );
      this.navCtrl.push(LoginPage);
      if (this.authForm.valid) {
        let loader = this.loadingCtrl.create({
          content: 'Registering...',
          dismissOnPageChange: true
        });

        loader.present();
      this.navCtrl.push(LoginPage);
      }
    })
    .catch(error => {
      console.log("got an error ", error);
      this.alert(error.message);
    });

});


}
registerUser(电话号码:number){
警报('flat'+此flatn.值);
var q=firebase.database().ref('users').orderByChild('flatno').equalTo(此.flatn.value);
q、 一次('值',(快照:任意)=>{
//警报(JSON.stringify(snapshots.val());
this.len=snapshots.numChildren();
警报('len='+this.len);
如果(此.len<2){
此。警报(“成功”);
//我只想在这个条件为真的情况下注册用户。但我的代码并没有按照我想要的方式执行,这是在这个条件之后编写的。
}否则{
//此。警报(“成功”);
此警报(“不允许超过2个用户在同一公寓注册”);
//flatno还不存在,请继续添加新用户
}
this.fire.auth
.createUserWithEmailAndPassword(this.email.value,this.password.value)
。然后(数据=>{
让currentUserUid=this.fire.auth.currentUser.uid;
this.uniqueDeviceID.get()
.然后((uDid:any)=>this.uDid=uDid)
.catch((错误:any)=>警报('err'+错误));
警报(this.uDid);
firebase.database().ref('users/'+currentUserUid).set({
ID:currentUserUid,
电子邮件:this.email.value,
密码:this.password.value,
名字:this.fname.value,
姓氏:this.lname.value,
联系电话号码:this.phone.value,
flatno:这个flatn.value,
wing:this.wing.value,
停车位:this.vehicle.value,
familyMember:this.familyMember.value,
用户名:this.user.value,
设备id:this.uDid
});
此.fdb.list(“/users\u device/”).push({
设备id:this.uDid,
Uid:currentUserUid
});
日志(“获取数据”,数据);
//此警报(数据);
此。警报(“已注册!”);
data.sendEmailVerification()。然后(
函数(){
此警报(“已发送电子邮件,请检查您的邮箱!”);
},
函数(错误){
警报(“错误!”);
}
);
this.navCtrl.push(LoginPage);
if(this.authForm.valid){
让loader=this.loadingCtrl.create({
内容:“正在注册…”,
dismissOnPageChange:true
});
loader.present();
this.navCtrl.push(LoginPage);
}
})
.catch(错误=>{
log(“得到一个错误”,error);
此.alert(错误消息);
});
});
}

我认为len不存在于您的范围内。检查此属性是否存在且未定义此属性。len

如果它不存在,则如何显示确切值?@MahiParmar检查len的类型,它可能不是数字。不,它的类型为any,但我也尝试了数字类型,但即使我的代码也不起作用