[英]How to enqueue functions in firebase
我正在使用 firebase 函數,並試圖從 RTDB onWrite 觸發器中排隊 function,到目前為止,我要么出錯,要么沒有任何反應,我也無法在網上找到任何有用的東西,甚至 firebase 文檔也沒有太大幫助。 ..
這是我的實時數據庫觸發器 function,它應該使 firebase function 入隊。
嘗試 #1
exports.onUserBasketUpdated = functions
.region("my-region")
.database.ref("/path/{uid}")
.onWrite(async (change, context) => {
const queue = getFunctions(admin.app, "my-region").taskQueue(
"expireUserBasket"
);
await queue.enqueue(
{
id: 1,
},
{
dispatchDeadlineSeconds: 60 * 1, // 1 minute
}
);
return { data: "ok" };
});
嘗試 #1 結果:錯誤:“ReferenceError:未定義隊列”
嘗試#2:
exports.onUserBasketUpdated = functions
.region("my-region")
.database.ref("/path/{uid}")
.onWrite(async (change, context) => {
await functions
.taskQueue(`locations/my-region/functions/expireUserBasket`)
.enqueue({ message: "hello" });
return { data: "ok" };
});
嘗試 #2 結果:錯誤:“TypeError:functions.taskQueue 不是函數”
我正在嘗試排隊的 function:
exports.expireUserBasket = functions
.region("my-region")
.runWith({ timeoutSeconds: 120 })
.tasks.taskQueue({
retryConfig: {
maxAttempts: 5,
minBackoffSeconds: 60,
},
rateLimits: {
maxConcurrentDispatches: 6,
},
})
.onDispatch(async (data) => {
console.info("data from the scheduled function", data);
});
任何幫助是極大的贊賞:)
關於此功能的文檔非常好。 提供了示例代碼。
就實際調用特定的 function 而言,直接在您的函數代碼中執行此操作。 你會這樣稱呼它。
我不相信在您的用例中使用了 Cloud Tasks 的 Enqueue 函數。
當您收到隊列未定義錯誤時,您可能錯過了文檔中的這一步(強調我的):
部署任務隊列 function
使用 Firebase CLI 部署任務隊列 function:
$ firebase deploy --only functions:backupApod
首次部署任務隊列 function 時,CLI 在 Cloud Tasks 中創建一個任務隊列,並在您的源代碼中指定選項(速率限制和重試)。
因此,在嘗試部署和測試onUserBasketUpdated
,僅部署expireUserBasket
function:
$ firebase deploy --only functions:expireUserBasket
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.