2017-07-21 10 views
0

私はユーザーを作成するための管理機能をまとめています。ユーザーの作成の一部は、特定のデータベースへのアクセスをユーザーに提供することです。角2 - Http Postが未定義のエラーを返す

コードでは、私のWeb APIにユーザーを作成するためのポストを送ります。作成が成功すると、私はユーザーデータベースバインディングを追加します。

private createUserDatabases(createdUser: Users) { 
     console.log(JSON.stringify(createdUser)); 
     if (this.isSuperAdmin && this.newUserDatabases.length > 0) {  
      var newUserDbs: UserDatabase[] = []; 
      for (var i = 0; i < this.newUserDatabases.length; i++) {     
       var newUserDatabase = new UserDatabase();        
       newUserDatabase.database_Id = this.newUserDatabases[i].id; 
       newUserDatabase.user_Id = createdUser.id; 
       newUserDbs.push(newUserDatabase); 
       //console.log("Getting ready to create"); 
       //this.usersService.addUserToDatabase(newUserDatabase); 
       // .subscribe(
       // data => console.log(JSON.stringify(data)), 
       // error => { 
       //  this.alertService.error(error._body); 
       //  console.log("userDb" + error._body); 
       // } 
       //); 
      } 

      console.log(newUserDbs); 
      return this.usersService.addUserToDatabase(newUserDbs); 

      //this.isOpened = false; 
     }  
    }  
onSubmit() { 
      var createdUser: Users; 
      this.usersService.create(this.user) 
       .do(u => createdUser = u) 
       .flatMap(u => {     
        return this.createUserDatabases(u); 
       }) 
       .subscribe(
       data => { 
        console.log(JSON.stringify(data)); 
        this.loadAllUsers(); 
        this.isOpened = false; 
       }, 
       error => { 
        this.alertService.error(error._body); 
        console.log(error._body); 
       } 
      )    
     } 

データベースバインディングがオブジェクトの配列(文字列、文字列)として送信されています。私は選択したデータベースごとに個別の呼び出しとしてこれを試しただけでなく、すべての選択されたデータベースで1回の呼び出しを試みました。

はここしかし、私は未定義のエラーを受信し、サブスクライブのデータ=>の部分にそれを作るわけではない、希望や要求のどちらがエラーを返しているよう

create(newUser: Users) { 
     return this.http.post(this.config.apiUrl + '/api/accounts/create', JSON.stringify(newUser), this.jwt()) 
      .map((response: any) => response.json()); 
    } 


    addUserToDatabase(newUserToDatabases: UserDatabase[]) { 
     console.log(JSON.stringify(newUserToDatabases)); 
     return this.http.post(this.config.apiUrl + '/api/userdatabases/create', JSON.stringify(newUserToDatabases), this.jwt()) 
      .map((response: any) => response.json()); 
    } 

すべてが完了しているサービスです。私は、この設定がうまくいくことを暗示しているように見える多くの記事や吹き出しを見つけました。あなたのマップコードの使用以下

+0

エラーは何ですか? –

+0

これは未定義を示しています –

答えて

1

.catch((error)=> { 
return Observable throw(error) 
}; 
+0

なぜ空のエラーが発生するのか理解していますか? –

+0

あなたは観測可能なものがあると期待しているかもしれません。Observableは上記のコードを参照してください。 – jsgeek

+0

あなたは何かに乗っていました! WebAPIがOK()にしか返答していないにもかかわらずJSONレスポンスをマッピングしていたからです。私は.mapを削除し、それを修正しました。 –