2017-03-11 12 views
1

私は以下の方法をサービス内に設けています。この方法は、特にユーザープロファイルをエキサイティングなものにしません。firebaseからの例外をキャッチ - AngularFire2

// Save user Profile 
saveProfile(user: User): Observable<Response> { 

    return Observable.fromPromise<Response>(

     this.af.database.object('/users/' + user.userId).update({ 
      first_name: user.first_name, 
      display_name: user.display_name, 
      biography: user.biography, 
      intent: user.intent, 
      seeking: user.seeking, 
      training: user.training, 
      dayDOB: user.dayDOB, 
      monthDOB: user.monthDOB, 
      yearDOB: user.yearDOB, 
      hobbies: user.hobbies, 
      last_name: user.last_name, 
      gender: user.gender, 
      address: user.Address 
     }).then((profile: any) => { 
      return new Response('Profile has been saved successfully', true); 
     }) 
      .catch((err: any) => { 
       return new Response('Unable to save profile at this time, please try again later.', false); 
      }) as Promise<Response> 
    ) 

} 

あなたはそれが、これは、更新が成功したかではない場合、私はに基づいてこれらの値を移入stringbooleanが含まれている私のカスタムクラスであるタイプReponsePromiseを返す見ることができるように。次に、コンポーネント内のbooleanの値を参照して、次に何をするかを決定します。

は、私が経験しています問題は、私は、このメソッドを作るとき、それは方法の catchセクション内で指定されているものを返さない失敗し、またそれが console.log任意のカスタムテキスト私は指定ないです

ではなく、それだけで、次の書き込み :

enter image description here

私はfirebaseドキュメントを検索しましたが、無駄で、誰もがこの前に経験していますか?あなたはそれを解決することができましたか?

しかし、あなたはこれらの例外をキャッチできない場合、なぜ.catchを持っているのを心配しますか?

答えて

1

受け取ったエラーは基本的にアサーションエラーです。 Firebaseデータベースから受け取ったエラーではありません。

addressプロパティがundefinedであるため、updateメソッドには無効な引数とみなされるメソッドが渡されました。

無効な引数を受け取った場合、即時の同期エラーをスローすることは、Firebase JavaScriptクライアントの作成者が作成したものであり、変更する可能性が低いという決定です。有効な入力を確実に渡す必要があります。

+0

私は彼らが読んだ後のケースかもしれないと思ったが、私は何かを見逃してしまったので質問をするだろうと思った。 –