Ionic 2:如果数据库(API)中已存在,则验证电子邮件

时间:2017-08-21 05:37:01

标签: angular api validation ionic2

我想验证用户名,如果它已存在于我的数据库中。这是我的代码:`

import { FormControl } from '@angular/forms';

export class EmailValidator {

  static checkEmail(control: FormControl): any {

    return new Promise(resolve => {

        let EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;

        if (control.value != "" && (control.value.length <= 5 || !EMAIL_REGEXP.test(control.value))) { 

          resolve({
            "Please provide a valid email": true
          });

        }else if(control.value.toLowerCase() === "sample123@yahoo.com"){

          resolve({
            "email taken": true
          });

        }else {
          resolve(null);
        }

    });
  }

}
希望你能帮助我。提前谢谢。

2 个答案:

答案 0 :(得分:0)

逻辑可以恢复到以下概念(粗略地):

表单验证

this.authService.registerEmail(email).subscribe(data => {
  if (data.success) {
     //server answered that the email doesn' exist
     showSucces();
     doSomthingHere(); //route? 
  }
  else{
    //failed, email exists
    showFail();
    doReturnToTheForm(); //route back
  }

<强> AuthService

  registerEmail(email) {
    return this.dataService.postData(someUrl, email);
  }

其中dataService正在由后端服务器管理http POST请求。

<强>的DataService

 constructor(private http:Http)
    postData(dataUrl: string, body: any): Observable<any> {
        return this.http.post(url, JSON.stringify(body), { headers: this.getHeaders(null) })
            .map(res => res.json())
            .catch((res: Response) => this.errorManager(res));
    }

答案 1 :(得分:-1)

您可以通过创建Api并在请求中传递电子邮件来执行此操作。作为回应,您将从服务方获得成功或错误。 没有Api电话就无法处理它。