2017-09-20 20 views
0

在firebase中有多個執行交錯/同時發生。當新的執行發生並且舊的執行ID被遺忘時,日誌ID改變。所以執行ID只會向前移動。當舊功能恢復時,它使用新的執行ID。有沒有一種方法可以實現舊函數的舊執行ID &新函數的新執行ID。如何在Firebase的雲端函數中擁有相同的執行ID

firebase logs

工作流程
可以說功能1 &函數2相同功能的不同勢觸發器。
1. Function1執行一些db讀操作並執行http請求。這將返回一個http promise - 這需要一些時間(可能會有一些ms)。讓我們假設它的日誌執行ID是154690519665944
2.當function1正在等待時,Function2被觸發。 function2獲得執行ID 154690574405903。 function2也做同樣的事情,並等待http響應。
3.功能1恢復並獲得http響應,並在記錄日誌時使用另一個執行ID 154694739233261

執行代碼發生了什麼變化154690519665944

由於存在多個觸發器同時發生,唯一能夠找到函數是否成功完成的方法是檢查日誌。所以通過使用執行id作爲過濾器,我可以找到函數是否成功執行。但是,因爲firebase隨機更改執行ID,我想我必須找到另一個解決方案。

PS:有一個更新調用會觸發相同的功能。這是否改變父功能執行ID?

+0

我不知道我明白你在問什麼。函數的每次執行都會得到自己的執行ID,只要該函數正在執行,該ID就會被保留。 –

回答

0

沒有看到您的代碼或完整的日誌,我不認爲可以提供明確的答案。

但是,這聽起來像是你問的問題是如何在異步事務中將數據保存在內存中。無論火力地堡與否,你基本上有兩種選擇:

  1. 提交了 交易的第一部分,然後在數據到數據庫中檢索它在第二部分
  2. 從第一傳遞數據 部分到第二部分,以便它已經擁有它。

你似乎依靠執行-ID,所以我會建議採取後一種方式和輸入傳遞一個ID一起作爲一部分,你的HttpRequest並讓您的呼叫服務器在其響應返回。

相關問題