Angularfire2在创建用户之前验证用户名

时间:2018-02-06 17:40:56

标签: firebase angularfire2 angular5

我无法理解查询在AngularFirestore中的工作方式。

我尝试针对我在数据库中已有的用户验证自定义用户名,因为我不希望用户能够选择相同的用户名。不幸的是,我已经失败了。我根据我在这里和其他地方阅读的内容使用了这段代码。

 this.users = this.db.collection('/users', ref => ref.where('team', '==', this.user.team));

我很抱歉迷路并询问您可能会考虑的基本问题。我无法理解为什么它无法正常工作。

此致

亨德里克

1 个答案:

答案 0 :(得分:0)

我希望我的问题是正确的。 如果它正常工作,试试这个并给我反馈。

constructor(private afs: AngularFirestore) {}

// your function onclick 
emailcheck($event) {
let x = $event.target.value;
if (x.trim() == '') {
  this.status = 'Email is required';
}
else {
  this.status = 'Loading..'
  let collectionRef = this.afs.collection('users').ref;
  let queryRef = collectionRef.where('email', '==', x);
  queryRef.get().then((snap) => {
    if (snap.empty) {
      this.status = 'OK!';
    }
    else {
      this.status = 'Email already in use!'
    }
  })
}


如果您使用firebase函数createUserWithEmailAndPassword()

// register function
register() {
  firebase.auth().createUserWithEmailAndPassword(inputValue.email, inputValue.password)
  .then((success) => 
  // your code after Success 
  )
  .catch((error) => {
    // your code after fail
    var errorCode = error.code;
    var errorMessage = error.message;
    console.log("ErrorCode: " + errorCode + "<br>ErrorMessage: " + errorMessage);
    if(errorCode == 'auth/email-already-in-use') {
      // if email already in use
    }
    if(errorCode == 'auth/invalid-email') {
      // if invalid email
    }
  })
}