2017-11-06 16 views
0

非常にシンプルなAPIを使用しています。既に存在する場合は、メールでユーザーを作成する要求を出すことができ、エラーを返します。 このAPIは正常に動作しますが、Ionicでは正常に動作しないという問題があります。私はURLへのリクエストを行うと、完全に新しいユーザーと、それがすでに存在していることを応答を返しますが、私は、データベースを参照するとき、それが実際に何が起こっている私は信じてHTTP POSTから間違った返信を返す

を作成しました: イオンそれそれを完了した後、別のものを行い、最後の結果を私に示します。

注:私はこのアプリケーションでは「スーパーテンプレート」を使用しましたが、私はこの問題を抱えていないため、これを行っているバグがあるかどうかわかりません。

User.ts

signup(accountInfo: any) { 
this.api.post('create_user&name='+accountInfo.name+'&email=' + accountInfo.email + '&pass=' + Md5.hashStr (accountInfo.password), 
    {},this.reqOpts).map((res) => res.json()).subscribe((resp)=>{ 
    console.log(resp); 
    }) 

Api.ts

post(endpoint: string, body: any, reqOpts?: any) { 
    return this.http.post(this.url + endpoint, reqOpts); 

私はすでにいくつかの場所で.share()を追加しようとした、と私は成功しませんでした。

+0

使用デバッガは、それをトリガーだ人を見つけることができますか? – Thabung

答えて

0

複数のリクエストをブール値で送信しないようにしてください。多分それはいくつかの助けになるだろう。これは、インジケータやリクエストを送信する際に必要なその他のものをロードする際にも役立ちます。

ユーザーが何回かクリックして複数のリクエストを送信する必要がない場合もあるので、リクエストが進行中かどうかを確認するだけで済みます。それは、複数のリクエスト&お作っているかどうかを確認するために

isRequestSent: boolean = false;

signup(accountInfo: any) { 
    if(!this.isRequestSent) { 
     this.isRequestSent = true; 
     this.api.post('create_user&name='+accountInfo.name+'&email=' + accountInfo.email + '&pass=' + Md5.hashStr (accountInfo.password),{},this.reqOpts) 
     .map((res) => res.json()) 
     .subscribe((resp)=>{ 
      console.log(resp); 
      this.isRequestSent = false; 
     }, (error: any) => { 
      this.isRequestSent = false; 
     }); 
    } 
} 
+0

はい、完璧ですが、現時点で問題になっているのは、私に返されているリクエストが常に1つで、ユーザーが既に存在しているという結果です。最初のリクエスト(登録用)は返されません – Lucius0101

+0

ええと、Webインスペクタを開き、ネットワークタブに行き、POSTリクエストが2回送信されたかどうかを確認してください。 (注意:angleは2つのリクエストが送信されたと思うかもしれないので、OPTIONS要求を送信することがありますが、2つのPOSTリクエストが送信されているかどうかを確認してください) これはバックエンドの問題であり、 –

+0

Networkタブで見ると、彼は実際に2つのリクエストをしていますが、1つのOptions、他のPOST – Lucius0101

関連する問題