我在特定時間觸發Firebase的Cloud功能。此功能正確啓動。如何取消正在進行的雲端功能?
當函數仍然需要執行時,在我的場景中,函數寫入的數據可能會被刪除。
所以在刪除數據之後,會創建一個帶有.update()
數據的新路徑。
我該如何避免這種行爲?是否有一些函數可以調用來停止某個函數?
這是我的代碼示例。 情況現在的問題是關於兩個功能:
- 獲取Facebook的長期居住的道理,至極火災時,用戶首先loged中,只有Firebse給出了一個Facebook的accessToken :( 它看起來像:
exports.getFacebookLongLivedAccessToken = functions.database.ref('/users/{uid}/...').onWrite(event => { const accessToken = event.data; if(event.data.val() !== null) { const baseFBUrl = "https://graph.facebook.com/oauth/access_token?client_id=...&client_secret=...&grant_type=fb_exchange_token&fb_exchange_token=" const fbAccessTokenUrl = baseFBUrl + accessToken.val(); axios.get(fbAccessTokenUrl) .then(function (response) { return accessToken.ref.parent.update({accessTokenLongLived: response.data.access_token}); }) .catch(function (error) { console.error(error); return accessToken.ref.parent.update({accessTokenLongLived: error + ' - ' + fbAccessTokenUrl}); }); } else { return; } });
予提及的第二個功能,是用戶刪除,這看起來像:
exports.cleanupUserData = functions.auth.user().onDelete(event => { const uid = event.data.uid; console.error(uid) console.error(event.data) return admin.database().ref('/users/' + uid).remove(); //return uid.ref.parent.remove(uid); });
我知道;登錄和刪除後的變化不是很大,但我傾向於製作更多的功能並獲得更多的使用等等。所以對我來說,理解並正確理解這一點非常重要。
我不知道我明白你的情況在這裏。你能編輯這個問題嗎?包括你正在使用的代碼,以及關於什麼不按你期望的方式工作的更多細節。 –
@Doug,謝謝你的迴應。我添加了我的代碼。 – BushJopie
我認爲現有的答案是你正在尋找的。您應該將某種標誌值寫回數據庫,以檢查第二次調用,以確定該位置的數據是否已經處理。是的,它仍然需要2個函數調用,而且團隊正在研究改進方法。 –