我想知道在链接promises时编写node.js代码的正确方法是什么,如果出现问题我需要更新实时数据库?
以下是代码:
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并完成。 (现实世界中很少见。)
答案 0 :(得分:2)
[Firebase云功能开发者] 你的想法很聪明。它会工作很多次,但不会捕获较低级别的问题,例如数据库不可用或应用程序超时(尽管可以通过重新排列的Promise.race修复)。
我们正在努力为核心产品添加重试次数。既然你提出了这个问题,我很乐意征求一些客户的意见。作为开发人员,您在重试策略中需要/期望哪些功能?您认为什么是理智的默认值,您希望如何覆盖这些默认值?