2017-08-30 8 views
0

firebaseノードライブラリ、リアルタイムデータベースを使用すると、約束が返されますが、.then()メソッドのコードで例外が発生した場合はどうなりますか?コードを.catch()メソッドに移動させるにはどうすればよいですか?ここでは、catchメソッドに移動しようとしているコードを示します。エラーをキャッチするステートメント

admin.database().ref('/something/something').once('value').then(function(data: admin.database.DataSnapshot) { 
    if(data.val() === null) { 
     return new TypeError('invalid'); 
    } 
}).catch(function(err) { 
    console.log(err); 
}); 

答えて

1

あなたは同じで、 `var`と`非同期/ await`(ES8)を見て非同期待つ

async function asyncFunction() { 
    try { 
     const data: admin.database.DataSnapshot = await admin.database().ref('/something/something').once('value'); 
     if(data.val() === null) { 
      throw new TypeError('invalid'); 
     } 
    } catch (err) { 
     console.log(err); 
    } 
} 
+0

を使用して、より読みやすいコードメイクを扱うあなたのエラーを簡素化することができ機能は私を笑わせる。 'const/let'(es6)を使用してください。 –

+1

@GrégoryNEUTはい、そうです、それを' const'に変更しました:)。しかし、 'async/await'の場合、非同期のためにes8まで待つ必要はありません:typescriptを使用している場合は待ちます:) –

+0

ああ、それはタイプスクリプトについて見たことがありませんでした!ニースキャッチ –

2

あなたはおよそtrycatchを聞くとき、あなたが考える必要が3番目のワードがthrowです!

throw new TypeError('invalid') 

enter image description here

関連する問題