[英]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.