私は、約束が結ばれていて、何か問題が生じた場合にリアルタイムデータベースを更新する必要があるときに、node.jsコードを書く正しい方法は何ですか?ここでFirebaseエラー処理のクラウド機能
はコードです:
export const testErrorHandling = functions.database
.ref('/workqueue/{pushId}/something').onWrite(event => {
// Exit when the data is deleted.
if (!event.data.exists()) {
return;
}
//This is the retry count, give up if more than 5 times have been retried.
const data = event.data.val()
if (data.count >= 5) {
return
}
return event.data.ref.root.child(data.fulluri).once('value').then(snapshot => {
//Process all, if ok, delete the work queue entry
return event.data.ref.remove()
}).catch(exception => {
console.log('Error!: ' + exception)
//Log error, increase retry count by one an write to that
//location to trigger a retry
//Is the line below OK?
//return event.data.ref.child('count').set(data.count + 1)
})
})
私は、これは多くの場合、共通の要件ですが、すべての例がちょうどconsole.errorすると行われる書き込みをするように見えるとして例を見つけることができませんでしたよね。 (現実の世界ではそれほどではありません)
実際にコード内でエラーを処理できるのは、エラーを検出するだけです。だから、あなたは間違って、キャッチを引き起こすと思いますか?どのようにそれを処理したいですか? –
Btw:現在のところ、クラウド機能を強制的に再試行する方法はありませんが、将来のバージョンで追加される可能性があります。 –
AWSラムダのPDFを作成し、クラウドストレージに書き出し、正しく書かれていることを確認して開くことができます。書かれたPDFが添付された郵便番号を使用してメールを送信し、それに従ってデータを更新します。 おそらくすべてのhttps呼び出しなどの再試行を設定できますが、作業量とテスト量は多すぎます。 idempodentコード(再試行の実装方法に関係なく)を書いたほうがずっと簡単で、全体を再試行するだけです。 サービスが停止し、一時的なエラーコードが表示されたり、クラウドストレージへの書き込みが破損して終了することがありました。 – anotherdev