0

firebase changePassword() 関数をエラー コールバックと一緒に使用しようとしています。

changePassword: function(email, oldPassword, newPassword){
      return auth.$changePassword(email, oldPassword, newPassword).then(function(error) {
console.log(error);
});

スクリプトは効果的で機能します。ただし、エラー コールバックはそうではありません。たとえば、間違った oldpassword が入力された場合、何も起こらず、コンソールにも何も記録されません。すべてが正しく行われ、パスワードが正常に変更されると、エラーがコンソールに記録され、未定義のように見えます。

同様の問題を抱えている人/私が間違っていることを知っていますか?

ありがとう

4

1 に答える 1

2

AngularFire の$changePasswordメソッドは promise を返します。Futures/promise を使用する場合、標準は node.js 風のコールバックとは異なり、エラーは成功のコールバックでは返されず、代わりに失敗のコールバック (2 番目の関数が渡されます) に渡されます。

のショートカットとして、特別なfinalおよびメソッドを利用することもできます。これにより、一連のイベントを洗練された方法で連鎖させることができます。catchthen(success, failure)

stepOne()
  .then(stepTwo)
  .then(stepThree)
  .then(stepFour)
  .catch(function(error) {
     console.error(error);
  });

正確に 1 つの場所でのみエラーを処理する方法に注意してください。各「ステップ」は、前のステップが成功した場合にのみトリガーされるため、あらゆる時点で失敗を処理するために if/then/else ロジックを常に含める必要はありません。

したがって、翻訳するには、API は次のように使用されます。

$changePassword(...).then(/* success */, /* failure */);

またはあなたの場合:

changePassword: function(email, oldPassword, newPassword){
      return auth.$changePassword(email, oldPassword, newPassword).catch(function(error) {
console.log(error); });
   // or...
   // return auth.$changePassword(...).then(null, function(error) { ... });
});
于 2014-08-11T15:57:31.283 に答える